mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-04-02 20:35:37 +02:00
Support Electronic Arts files containing MP3 audio.
Originally committed as revision 14824 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
97ceb75218
commit
fc7ed9a6f6
@ -185,6 +185,7 @@ static int process_audio_header_elements(AVFormatContext *s)
|
|||||||
switch (revision2) {
|
switch (revision2) {
|
||||||
case 8: ea->audio_codec = CODEC_ID_PCM_S16LE_PLANAR; break;
|
case 8: ea->audio_codec = CODEC_ID_PCM_S16LE_PLANAR; break;
|
||||||
case 10: ea->audio_codec = CODEC_ID_ADPCM_EA_R2; break;
|
case 10: ea->audio_codec = CODEC_ID_ADPCM_EA_R2; break;
|
||||||
|
case 16: ea->audio_codec = CODEC_ID_MP3; break;
|
||||||
case -1: break;
|
case -1: break;
|
||||||
default:
|
default:
|
||||||
av_log(s, AV_LOG_ERROR, "unsupported stream type; revision2=%i\n", revision2);
|
av_log(s, AV_LOG_ERROR, "unsupported stream type; revision2=%i\n", revision2);
|
||||||
@ -430,6 +431,7 @@ static int ea_read_packet(AVFormatContext *s,
|
|||||||
int packet_read = 0;
|
int packet_read = 0;
|
||||||
unsigned int chunk_type, chunk_size;
|
unsigned int chunk_type, chunk_size;
|
||||||
int key = 0;
|
int key = 0;
|
||||||
|
int num_samples;
|
||||||
|
|
||||||
while (!packet_read) {
|
while (!packet_read) {
|
||||||
chunk_type = get_le32(pb);
|
chunk_type = get_le32(pb);
|
||||||
@ -448,8 +450,10 @@ static int ea_read_packet(AVFormatContext *s,
|
|||||||
if (!ea->audio_codec) {
|
if (!ea->audio_codec) {
|
||||||
url_fskip(pb, chunk_size);
|
url_fskip(pb, chunk_size);
|
||||||
break;
|
break;
|
||||||
} else if (ea->audio_codec == CODEC_ID_PCM_S16LE_PLANAR) {
|
} else if (ea->audio_codec == CODEC_ID_PCM_S16LE_PLANAR ||
|
||||||
url_fskip(pb, 12); /* planar header */
|
ea->audio_codec == CODEC_ID_MP3) {
|
||||||
|
num_samples = get_le32(pb);
|
||||||
|
url_fskip(pb, 8);
|
||||||
chunk_size -= 12;
|
chunk_size -= 12;
|
||||||
}
|
}
|
||||||
ret = av_get_packet(pb, pkt, chunk_size);
|
ret = av_get_packet(pb, pkt, chunk_size);
|
||||||
@ -468,6 +472,10 @@ static int ea_read_packet(AVFormatContext *s,
|
|||||||
ea->audio_frame_counter += ((chunk_size - 12) * 2) /
|
ea->audio_frame_counter += ((chunk_size - 12) * 2) /
|
||||||
ea->num_channels;
|
ea->num_channels;
|
||||||
break;
|
break;
|
||||||
|
case CODEC_ID_PCM_S16LE_PLANAR:
|
||||||
|
case CODEC_ID_MP3:
|
||||||
|
ea->audio_frame_counter += num_samples;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
ea->audio_frame_counter += chunk_size /
|
ea->audio_frame_counter += chunk_size /
|
||||||
(ea->bytes * ea->num_channels);
|
(ea->bytes * ea->num_channels);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user