diff --git a/libavformat/rpl.c b/libavformat/rpl.c index 367e80b2c4..d495734e8e 100644 --- a/libavformat/rpl.c +++ b/libavformat/rpl.c @@ -121,6 +121,7 @@ static int rpl_read_header(AVFormatContext *s) int error = 0; const char *endptr; char audio_type[RPL_LINE_LENGTH]; + char audio_codec[RPL_LINE_LENGTH]; uint32_t i; @@ -189,7 +190,9 @@ static int rpl_read_header(AVFormatContext *s) // ARMovie supports multiple audio tracks; I don't have any // samples, though. This code will ignore additional tracks. - audio_format = read_line_and_int(pb, &error); // audio format ID + error |= read_line(pb, line, sizeof(line)); + audio_format = read_int(line, &endptr, &error); // audio format ID + av_strlcpy(audio_codec, endptr, RPL_LINE_LENGTH); if (audio_format) { ast = avformat_new_stream(s, NULL); if (!ast) @@ -227,6 +230,11 @@ static int rpl_read_header(AVFormatContext *s) // There are some other formats listed as legal per the spec; // samples needed. break; + case 2: + if (av_stristr(audio_codec, "adpcm") != NULL) { + ast->codecpar->codec_id = AV_CODEC_ID_ADPCM_IMA_ACORN; + } + break; case 101: if (ast->codecpar->bits_per_coded_sample == 8) { // The samples with this kind of audio that I have @@ -238,8 +246,8 @@ static int rpl_read_header(AVFormatContext *s) break; } if (ast->codecpar->codec_id == AV_CODEC_ID_NONE) - avpriv_request_sample(s, "Audio format %"PRId32, - audio_format); + avpriv_request_sample(s, "Audio format %"PRId32" (%s)", + audio_format, audio_codec); avpriv_set_pts_info(ast, 32, 1, ast->codecpar->bit_rate); } else { for (i = 0; i < 3; i++)