mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
Allow remuxing of explicitly signalled AAC files into ADTS.
The ADTS output files are not explicitly signaled because the format does not support explicit signalling. Originally committed as revision 23935 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
8a472821a4
commit
5935f9d6bd
@ -23,6 +23,7 @@
|
||||
#include "libavcodec/get_bits.h"
|
||||
#include "libavcodec/put_bits.h"
|
||||
#include "libavcodec/avcodec.h"
|
||||
#include "libavcodec/mpeg4audio.h"
|
||||
#include "avformat.h"
|
||||
#include "adts.h"
|
||||
|
||||
@ -30,11 +31,17 @@ int ff_adts_decode_extradata(AVFormatContext *s, ADTSContext *adts, uint8_t *buf
|
||||
{
|
||||
GetBitContext gb;
|
||||
PutBitContext pb;
|
||||
MPEG4AudioConfig m4ac;
|
||||
int off;
|
||||
|
||||
init_get_bits(&gb, buf, size * 8);
|
||||
adts->objecttype = get_bits(&gb, 5) - 1;
|
||||
adts->sample_rate_index = get_bits(&gb, 4);
|
||||
adts->channel_conf = get_bits(&gb, 4);
|
||||
off = ff_mpeg4audio_get_config(&m4ac, buf, size);
|
||||
if (off < 0)
|
||||
return off;
|
||||
skip_bits_long(&gb, off);
|
||||
adts->objecttype = m4ac.object_type - 1;
|
||||
adts->sample_rate_index = m4ac.sampling_index;
|
||||
adts->channel_conf = m4ac.chan_config;
|
||||
|
||||
if (adts->objecttype > 3U) {
|
||||
av_log(s, AV_LOG_ERROR, "MPEG-4 AOT %d is not allowed in ADTS\n", adts->objecttype+1);
|
||||
@ -52,10 +59,6 @@ int ff_adts_decode_extradata(AVFormatContext *s, ADTSContext *adts, uint8_t *buf
|
||||
av_log(s, AV_LOG_ERROR, "Scalable configurations are not allowed in ADTS\n");
|
||||
return -1;
|
||||
}
|
||||
if (get_bits(&gb, 1)) {
|
||||
av_log_missing_feature(s, "Signaled SBR or PS", 0);
|
||||
return -1;
|
||||
}
|
||||
if (!adts->channel_conf) {
|
||||
init_put_bits(&pb, adts->pce_data, MAX_PCE_SIZE);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user