mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-12-24 20:45:07 +00:00
avformat/rpl: Support files containing 8 bit PCM or VIDC audio
Signed-off-by: Cameron Cawley <ccawley2011@gmail.com>
This commit is contained in:
parent
22238d0b94
commit
0e9c01fd87
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user