Signed-off-by: Cameron Cawley <ccawley2...@gmail.com> --- libavformat/rpl.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/libavformat/rpl.c b/libavformat/rpl.c index d373600478..6b45b35c30 100644 --- a/libavformat/rpl.c +++ b/libavformat/rpl.c @@ -119,6 +119,8 @@ static int rpl_read_header(AVFormatContext *s) AVStream *vst = NULL, *ast = NULL; int total_audio_size; int error = 0; + const char *endptr; + char audio_type[RPL_LINE_LENGTH]; uint32_t i; @@ -188,7 +190,9 @@ static int rpl_read_header(AVFormatContext *s) ast->codecpar->codec_tag = audio_format; ast->codecpar->sample_rate = read_line_and_int(pb, &error); // audio bitrate ast->codecpar->channels = read_line_and_int(pb, &error); // number of audio channels - ast->codecpar->bits_per_coded_sample = read_line_and_int(pb, &error); // audio bits per sample + error |= read_line(pb, line, sizeof(line)); + ast->codecpar->bits_per_coded_sample = read_int(line, &endptr, &error); // audio bits per sample + strcpy(audio_type, endptr); // At least one sample uses 0 for ADPCM, which is really 4 bits // per sample. if (ast->codecpar->bits_per_coded_sample == 0) @@ -205,6 +209,17 @@ static int rpl_read_header(AVFormatContext *s) // 16-bit audio is always signed ast->codecpar->codec_id = AV_CODEC_ID_PCM_S16LE; break; + } else if (ast->codecpar->bits_per_coded_sample == 8) { + if(strstr(audio_type, "unsigned") != NULL) { + ast->codecpar->codec_id = AV_CODEC_ID_PCM_U8; + break; + } else if(strstr(audio_type, "linear") != NULL) { + ast->codecpar->codec_id = AV_CODEC_ID_PCM_S8; + break; + } else { + ast->codecpar->codec_id = AV_CODEC_ID_PCM_VIDC; + break; + } } // There are some other formats listed as legal per the spec; // samples needed. -- 2.11.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel