Showing the changes to libavformat (1 of 1 file). Show all
Unified · Split
| @@ -68,30 +68,30 @@ static int fsb_read_header(AVFormatContext *s) · 67 unmodified lines | |||
| 68 | if (par->sample_rate <= 0) | 68 | if (par->sample_rate <= 0) |
| 69 | return AVERROR_INVALIDDATA; | 69 | return AVERROR_INVALIDDATA; |
| 70 | avio_skip(pb, 6); | 70 | avio_skip(pb, 6); |
| 71 | par->channels = avio_rl16(pb); | 71 | par->ch_layout.nb_channels = avio_rl16(pb); |
| 72 | if (!par->channels) | 72 | if (!par->ch_layout.nb_channels) |
| 73 | return AVERROR_INVALIDDATA; | 73 | return AVERROR_INVALIDDATA; |
| 74 | 74 | ||
| 75 | if (format & 0x00000100) { | 75 | if (format & 0x00000100) { |
| 76 | par->codec_id = AV_CODEC_ID_PCM_S16LE; | 76 | par->codec_id = AV_CODEC_ID_PCM_S16LE; |
| 77 | par->block_align = 4096 * par->channels; | 77 | par->block_align = 4096 * par->ch_layout.nb_channels; |
| 78 | } else if (format & 0x00400000) { | 78 | } else if (format & 0x00400000) { |
| 79 | par->bits_per_coded_sample = 4; | 79 | par->bits_per_coded_sample = 4; |
| 80 | par->codec_id = AV_CODEC_ID_ADPCM_IMA_WAV; | 80 | par->codec_id = AV_CODEC_ID_ADPCM_IMA_WAV; |
| 81 | par->block_align = 36 * par->channels; | 81 | par->block_align = 36 * par->ch_layout.nb_channels; |
| 82 | } else if (format & 0x00800000) { | 82 | } else if (format & 0x00800000) { |
| 83 | par->codec_id = AV_CODEC_ID_ADPCM_PSX; | 83 | par->codec_id = AV_CODEC_ID_ADPCM_PSX; |
| 84 | par->block_align = 16 * par->channels; | 84 | par->block_align = 16 * par->ch_layout.nb_channels; |
| 85 | } else if (format & 0x02000000) { | 85 | } else if (format & 0x02000000) { |
| 86 | par->codec_id = AV_CODEC_ID_ADPCM_THP; | 86 | par->codec_id = AV_CODEC_ID_ADPCM_THP; |
| 87 | par->block_align = 8 * par->channels; | 87 | par->block_align = 8 * par->ch_layout.nb_channels; |
| 88 | if (par->channels > INT_MAX / 32) | 88 | if (par->ch_layout.nb_channels > INT_MAX / 32) |
| 89 | return AVERROR_INVALIDDATA; | 89 | return AVERROR_INVALIDDATA; |
| 90 | ret = ff_alloc_extradata(par, 32 * par->channels); | 90 | ret = ff_alloc_extradata(par, 32 * par->ch_layout.nb_channels); |
| 91 | if (ret < 0) | 91 | if (ret < 0) |
| 92 | return ret; | 92 | return ret; |
| 93 | avio_seek(pb, 0x68, SEEK_SET); | 93 | avio_seek(pb, 0x68, SEEK_SET); |
| 94 | for (c = 0; c < par->channels; c++) { | 94 | for (c = 0; c < par->ch_layout.nb_channels; c++) { |
| 95 | avio_read(pb, par->extradata + 32 * c, 32); | 95 | avio_read(pb, par->extradata + 32 * c, 32); |
| 96 | avio_skip(pb, 14); | 96 | avio_skip(pb, 14); |
| 97 | } | 97 | } |
| @@ -125,8 +125,8 @@ static int fsb_read_header(AVFormatContext *s) · 27 unmodified lines | |||
| 125 | return AVERROR_INVALIDDATA; | 125 | return AVERROR_INVALIDDATA; |
| 126 | avio_skip(pb, 6); | 126 | avio_skip(pb, 6); |
| 127 | 127 | ||
| 128 | par->channels = avio_rl16(pb); | 128 | par->ch_layout.nb_channels = avio_rl16(pb); |
| 129 | if (!par->channels) | 129 | if (!par->ch_layout.nb_channels) |
| 130 | return AVERROR_INVALIDDATA; | 130 | return AVERROR_INVALIDDATA; |
| 131 | 131 | ||
| 132 | switch (par->codec_id) { | 132 | switch (par->codec_id) { |
| @@ -138,17 +138,17 @@ static int fsb_read_header(AVFormatContext *s) · 5 unmodified lines | |||
| 138 | par->block_align = 2048; | 138 | par->block_align = 2048; |
| 139 | break; | 139 | break; |
| 140 | case AV_CODEC_ID_ADPCM_THP: | 140 | case AV_CODEC_ID_ADPCM_THP: |
| 141 | if (par->channels > INT_MAX / 32) | 141 | if (par->ch_layout.nb_channels > INT_MAX / 32) |
| 142 | return AVERROR_INVALIDDATA; | 142 | return AVERROR_INVALIDDATA; |
| 143 | ret = ff_alloc_extradata(par, 32 * par->channels); | 143 | ret = ff_alloc_extradata(par, 32 * par->ch_layout.nb_channels); |
| 144 | if (ret < 0) | 144 | if (ret < 0) |
| 145 | return ret; | 145 | return ret; |
| 146 | avio_seek(pb, 0x80, SEEK_SET); | 146 | avio_seek(pb, 0x80, SEEK_SET); |
| 147 | for (c = 0; c < par->channels; c++) { | 147 | for (c = 0; c < par->ch_layout.nb_channels; c++) { |
| 148 | avio_read(pb, par->extradata + 32 * c, 32); | 148 | avio_read(pb, par->extradata + 32 * c, 32); |
| 149 | avio_skip(pb, 14); | 149 | avio_skip(pb, 14); |
| 150 | } | 150 | } |
| 151 | par->block_align = 8 * par->channels; | 151 | par->block_align = 8 * par->ch_layout.nb_channels; |
| 152 | break; | 152 | break; |
| 153 | } | 153 | } |
| 154 | } else { | 154 | } else { |
| @@ -174,14 +174,14 @@ static int fsb_read_packet(AVFormatContext *s, AVPacket *pkt) · 19 unmodified lines | |||
| 174 | 174 | ||
| 175 | pos = avio_tell(s->pb); | 175 | pos = avio_tell(s->pb); |
| 176 | if (par->codec_id == AV_CODEC_ID_ADPCM_THP && | 176 | if (par->codec_id == AV_CODEC_ID_ADPCM_THP && |
| 177 | par->channels > 1) { | 177 | par->ch_layout.nb_channels > 1) { |
| 178 | int i, ch; | 178 | int i, ch; |
| 179 | 179 | ||
| 180 | ret = av_new_packet(pkt, par->block_align); | 180 | ret = av_new_packet(pkt, par->block_align); |
| 181 | if (ret < 0) | 181 | if (ret < 0) |
| 182 | return ret; | 182 | return ret; |
| 183 | for (i = 0; i < 4; i++) { | 183 | for (i = 0; i < 4; i++) { |
| 184 | for (ch = 0; ch < par->channels; ch++) { | 184 | for (ch = 0; ch < par->ch_layout.nb_channels; ch++) { |
| 185 | pkt->data[ch * 8 + i * 2 + 0] = avio_r8(s->pb); | 185 | pkt->data[ch * 8 + i * 2 + 0] = avio_r8(s->pb); |
| 186 | pkt->data[ch * 8 + i * 2 + 1] = avio_r8(s->pb); | 186 | pkt->data[ch * 8 + i * 2 + 1] = avio_r8(s->pb); |
| 187 | } | 187 | } |