diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-09-25 18:11:34 +0400 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-09-25 18:11:34 +0400 |
commit | abcaacf1acb4c7d7c2df5718fd56a714d4998305 (patch) | |
tree | e1d7a138ddab9f9863d792719aa349a73f79f2fa /libavcodec | |
parent | d3ef2da59df2bf65bea0ae7b519625c51c6f21dc (diff) | |
parent | 7a1a9dd56cb4cafad054bf6d65b21bb24d31c544 (diff) |
Merge remote-tracking branch 'qatar/master'
* qatar/master:
pthread: make sure AVFrame.extended_data is set properly.
libfdk-aac: reindent after last commit
libfdk-aac: Limit to supported sample rates.
cbrt_tablegen: Include libm.h
oggparsetheora: make it more robust
ogg: prevent NULL pointer deference in theora gptopts
Conflicts:
libavformat/oggparsetheora.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/cbrt_tablegen.c | 1 | ||||
-rw-r--r-- | libavcodec/libfdk-aacenc.c | 36 | ||||
-rw-r--r-- | libavcodec/pthread.c | 4 |
3 files changed, 26 insertions, 15 deletions
diff --git a/libavcodec/cbrt_tablegen.c b/libavcodec/cbrt_tablegen.c index e0a8e63a8b..babb85a07b 100644 --- a/libavcodec/cbrt_tablegen.c +++ b/libavcodec/cbrt_tablegen.c @@ -21,6 +21,7 @@ */ #include <stdlib.h> +#include "libavutil/libm.h" #define CONFIG_HARDCODED_TABLES 0 #include "cbrt_tablegen.h" #include "tableprint.h" diff --git a/libavcodec/libfdk-aacenc.c b/libavcodec/libfdk-aacenc.c index 965ead6c16..36df84f741 100644 --- a/libavcodec/libfdk-aacenc.c +++ b/libavcodec/libfdk-aacenc.c @@ -391,20 +391,26 @@ static const uint64_t aac_channel_layout[] = { 0, }; +static const int aac_sample_rates[] = { + 96000, 88200, 64000, 48000, 44100, 32000, + 24000, 22050, 16000, 12000, 11025, 8000, 0 +}; + AVCodec ff_libfdk_aac_encoder = { - .name = "libfdk_aac", - .type = AVMEDIA_TYPE_AUDIO, - .id = AV_CODEC_ID_AAC, - .priv_data_size = sizeof(AACContext), - .init = aac_encode_init, - .encode2 = aac_encode_frame, - .close = aac_encode_close, - .capabilities = CODEC_CAP_SMALL_LAST_FRAME | CODEC_CAP_DELAY, - .sample_fmts = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_S16, - AV_SAMPLE_FMT_NONE }, - .long_name = NULL_IF_CONFIG_SMALL("Fraunhofer FDK AAC"), - .priv_class = &aac_enc_class, - .defaults = aac_encode_defaults, - .profiles = profiles, - .channel_layouts = aac_channel_layout, + .name = "libfdk_aac", + .type = AVMEDIA_TYPE_AUDIO, + .id = AV_CODEC_ID_AAC, + .priv_data_size = sizeof(AACContext), + .init = aac_encode_init, + .encode2 = aac_encode_frame, + .close = aac_encode_close, + .capabilities = CODEC_CAP_SMALL_LAST_FRAME | CODEC_CAP_DELAY, + .sample_fmts = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_S16, + AV_SAMPLE_FMT_NONE }, + .long_name = NULL_IF_CONFIG_SMALL("Fraunhofer FDK AAC"), + .priv_class = &aac_enc_class, + .defaults = aac_encode_defaults, + .profiles = profiles, + .supported_samplerates = aac_sample_rates, + .channel_layouts = aac_channel_layout, }; diff --git a/libavcodec/pthread.c b/libavcodec/pthread.c index e951032722..c0a872eba0 100644 --- a/libavcodec/pthread.c +++ b/libavcodec/pthread.c @@ -387,6 +387,10 @@ static attribute_align_arg void *frame_worker_thread(void *arg) p->got_frame = 0; p->result = codec->decode(avctx, &p->frame, &p->got_frame, &p->avpkt); + /* many decoders assign whole AVFrames, thus overwriting extended_data; + * make sure it's set correctly */ + p->frame.extended_data = p->frame.data; + if (p->state == STATE_SETTING_UP) ff_thread_finish_setup(avctx); pthread_mutex_lock(&p->progress_mutex); |