mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-28 12:32:17 +02:00
avformat/pcmdec: endianness for audio/L16 mime type
This commit is contained in:
parent
b058617fae
commit
f95c928f80
@ -50,9 +50,9 @@ static int pcm_read_header(AVFormatContext *s)
|
|||||||
|
|
||||||
av_opt_get(s->pb, "mime_type", AV_OPT_SEARCH_CHILDREN, &mime_type);
|
av_opt_get(s->pb, "mime_type", AV_OPT_SEARCH_CHILDREN, &mime_type);
|
||||||
if (mime_type && s->iformat->mime_type) {
|
if (mime_type && s->iformat->mime_type) {
|
||||||
int rate = 0, channels = 0;
|
int rate = 0, channels = 0, little_endian = 0;
|
||||||
size_t len = strlen(s->iformat->mime_type);
|
size_t len = strlen(s->iformat->mime_type);
|
||||||
if (!av_strncasecmp(s->iformat->mime_type, mime_type, len)) {
|
if (!av_strncasecmp(s->iformat->mime_type, mime_type, len)) { /* audio/L16 */
|
||||||
uint8_t *options = mime_type + len;
|
uint8_t *options = mime_type + len;
|
||||||
len = strlen(mime_type);
|
len = strlen(mime_type);
|
||||||
while (options < mime_type + len) {
|
while (options < mime_type + len) {
|
||||||
@ -63,6 +63,12 @@ static int pcm_read_header(AVFormatContext *s)
|
|||||||
sscanf(options, " rate=%d", &rate);
|
sscanf(options, " rate=%d", &rate);
|
||||||
if (!channels)
|
if (!channels)
|
||||||
sscanf(options, " channels=%d", &channels);
|
sscanf(options, " channels=%d", &channels);
|
||||||
|
if (!little_endian) {
|
||||||
|
char val[14]; /* sizeof("little-endian") == 14 */
|
||||||
|
if (sscanf(options, " endianness=%13s", val) == 1) {
|
||||||
|
little_endian = strcmp(val, "little-endian") == 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (rate <= 0) {
|
if (rate <= 0) {
|
||||||
av_log(s, AV_LOG_ERROR,
|
av_log(s, AV_LOG_ERROR,
|
||||||
@ -74,6 +80,8 @@ static int pcm_read_header(AVFormatContext *s)
|
|||||||
st->codecpar->sample_rate = rate;
|
st->codecpar->sample_rate = rate;
|
||||||
if (channels > 0)
|
if (channels > 0)
|
||||||
st->codecpar->channels = channels;
|
st->codecpar->channels = channels;
|
||||||
|
if (little_endian)
|
||||||
|
st->codecpar->codec_id = AV_CODEC_ID_PCM_S16LE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
av_freep(&mime_type);
|
av_freep(&mime_type);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user