History

fsb: convert to new channel layout API

Anton Khirnov committed 7 years ago

Commit 07cdec41 parent 95431611 file · +17 −17Browse files

Showing the changes to libavformat (1 of 1 file). Show all

Unified · Split

libavformat/fsb.c+17−17
@@ -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 }

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t