* qatar/master: swscale: Readd #define _SVID_SOURCE Fix av_get_channel_layout_string() for positions >31 configure: Store vda lib flags in extralibs instead of ldflags Make channel layout masks unsigned dca: ARMv6 optimised decode_blockcode() nullenc: drop AVFMT_RAWPICTURE from the flags frame-mt: return consumed packet size in ff_thread_decode_frame aacdec: add more fate tests covering SBR and PS MK(BE)TAG: avoid undefined shifts Conflicts: configure libavcodec/arm/dca.h libavcodec/dca.c libavcodec/mlp_parser.c libavcodec/version.h libavfilter/asrc_anullsrc.c libavfilter/avfilter.c libavfilter/avfilter.h libavfilter/defaults.c libavutil/audioconvert.c libavutil/avutil.h libswscale/utils.c Merged-by: Michael Niedermayer <michaelni@gmx.at>tags/n0.9
| @@ -2999,7 +2999,7 @@ disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib | |||||
| if ! disabled vda; then | if ! disabled vda; then | ||||
| if check_header VideoDecodeAcceleration/VDADecoder.h; then | if check_header VideoDecodeAcceleration/VDADecoder.h; then | ||||
| enable vda | enable vda | ||||
| add_ldflags -framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore | |||||
| add_extralibs -framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore | |||||
| fi | fi | ||||
| fi | fi | ||||
| @@ -48,7 +48,7 @@ typedef struct AACAC3ParseContext { | |||||
| int sample_rate; | int sample_rate; | ||||
| int bit_rate; | int bit_rate; | ||||
| int samples; | int samples; | ||||
| int64_t channel_layout; | |||||
| uint64_t channel_layout; | |||||
| int service_type; | int service_type; | ||||
| int remaining_size; | int remaining_size; | ||||
| @@ -90,7 +90,7 @@ static const uint8_t aac_channel_layout_map[7][5][2] = { | |||||
| { { TYPE_CPE, 0 }, { TYPE_SCE, 0 }, { TYPE_LFE, 0 }, { TYPE_CPE, 2 }, { TYPE_CPE, 1 }, }, | { { TYPE_CPE, 0 }, { TYPE_SCE, 0 }, { TYPE_LFE, 0 }, { TYPE_CPE, 2 }, { TYPE_CPE, 1 }, }, | ||||
| }; | }; | ||||
| static const int64_t aac_channel_layout[8] = { | |||||
| static const uint64_t aac_channel_layout[8] = { | |||||
| AV_CH_LAYOUT_MONO, | AV_CH_LAYOUT_MONO, | ||||
| AV_CH_LAYOUT_STEREO, | AV_CH_LAYOUT_STEREO, | ||||
| AV_CH_LAYOUT_SURROUND, | AV_CH_LAYOUT_SURROUND, | ||||
| @@ -120,7 +120,7 @@ typedef struct { | |||||
| uint32_t bit_rate; | uint32_t bit_rate; | ||||
| uint8_t channels; | uint8_t channels; | ||||
| uint16_t frame_size; | uint16_t frame_size; | ||||
| int64_t channel_layout; | |||||
| uint64_t channel_layout; | |||||
| /** @} */ | /** @} */ | ||||
| } AC3HeaderInfo; | } AC3HeaderInfo; | ||||
| @@ -77,7 +77,7 @@ static uint8_t exponent_group_tab[2][3][256]; | |||||
| /** | /** | ||||
| * List of supported channel layouts. | * List of supported channel layouts. | ||||
| */ | */ | ||||
| const int64_t ff_ac3_channel_layouts[19] = { | |||||
| const uint64_t ff_ac3_channel_layouts[19] = { | |||||
| AV_CH_LAYOUT_MONO, | AV_CH_LAYOUT_MONO, | ||||
| AV_CH_LAYOUT_STEREO, | AV_CH_LAYOUT_STEREO, | ||||
| AV_CH_LAYOUT_2_1, | AV_CH_LAYOUT_2_1, | ||||
| @@ -2060,13 +2060,13 @@ av_cold int ff_ac3_encode_close(AVCodecContext *avctx) | |||||
| * Set channel information during initialization. | * Set channel information during initialization. | ||||
| */ | */ | ||||
| static av_cold int set_channel_info(AC3EncodeContext *s, int channels, | static av_cold int set_channel_info(AC3EncodeContext *s, int channels, | ||||
| int64_t *channel_layout) | |||||
| uint64_t *channel_layout) | |||||
| { | { | ||||
| int ch_layout; | int ch_layout; | ||||
| if (channels < 1 || channels > AC3_MAX_CHANNELS) | if (channels < 1 || channels > AC3_MAX_CHANNELS) | ||||
| return AVERROR(EINVAL); | return AVERROR(EINVAL); | ||||
| if ((uint64_t)*channel_layout > 0x7FF) | |||||
| if (*channel_layout > 0x7FF) | |||||
| return AVERROR(EINVAL); | return AVERROR(EINVAL); | ||||
| ch_layout = *channel_layout; | ch_layout = *channel_layout; | ||||
| if (!ch_layout) | if (!ch_layout) | ||||
| @@ -258,7 +258,7 @@ typedef struct AC3EncodeContext { | |||||
| } AC3EncodeContext; | } AC3EncodeContext; | ||||
| extern const int64_t ff_ac3_channel_layouts[19]; | |||||
| extern const uint64_t ff_ac3_channel_layouts[19]; | |||||
| int ff_ac3_encode_init(AVCodecContext *avctx); | int ff_ac3_encode_init(AVCodecContext *avctx); | ||||
| @@ -27,38 +27,54 @@ | |||||
| #if HAVE_ARMV6 && HAVE_INLINE_ASM | #if HAVE_ARMV6 && HAVE_INLINE_ASM | ||||
| #define decode_blockcode decode_blockcode | |||||
| static inline int decode_blockcode(int code, int levels, int *values) | |||||
| #define decode_blockcodes decode_blockcodes | |||||
| static inline int decode_blockcodes(int code1, int code2, int levels, | |||||
| int *values) | |||||
| { | { | ||||
| int v0, v1, v2, v3; | |||||
| int v0, v1, v2, v3, v4, v5; | |||||
| __asm__ ("smmul %4, %8, %11 \n" | |||||
| "smlabb %8, %4, %10, %8 \n" | |||||
| "smmul %5, %4, %11 \n" | |||||
| "sub %8, %8, %9, lsr #1 \n" | |||||
| "smlabb %4, %5, %10, %4 \n" | |||||
| "smmul %6, %5, %11 \n" | |||||
| "str %8, %0 \n" | |||||
| "sub %4, %4, %9, lsr #1 \n" | |||||
| "smlabb %5, %6, %10, %5 \n" | |||||
| "smmul %7, %6, %11 \n" | |||||
| "str %4, %1 \n" | |||||
| "sub %5, %5, %9, lsr #1 \n" | |||||
| "smlabb %6, %7, %10, %6 \n" | |||||
| "cmp %7, #0 \n" | |||||
| "str %5, %2 \n" | |||||
| "sub %6, %6, %9, lsr #1 \n" | |||||
| "it eq \n" | |||||
| "mvneq %7, #0 \n" | |||||
| "str %6, %3 \n" | |||||
| __asm__ ("smmul %8, %14, %18 \n" | |||||
| "smmul %11, %15, %18 \n" | |||||
| "smlabb %14, %8, %17, %14 \n" | |||||
| "smlabb %15, %11, %17, %15 \n" | |||||
| "smmul %9, %8, %18 \n" | |||||
| "smmul %12, %11, %18 \n" | |||||
| "sub %14, %14, %16, lsr #1 \n" | |||||
| "sub %15, %15, %16, lsr #1 \n" | |||||
| "smlabb %8, %9, %17, %8 \n" | |||||
| "smlabb %11, %12, %17, %11 \n" | |||||
| "smmul %10, %9, %18 \n" | |||||
| "smmul %13, %12, %18 \n" | |||||
| "str %14, %0 \n" | |||||
| "str %15, %4 \n" | |||||
| "sub %8, %8, %16, lsr #1 \n" | |||||
| "sub %11, %11, %16, lsr #1 \n" | |||||
| "smlabb %9, %10, %17, %9 \n" | |||||
| "smlabb %12, %13, %17, %12 \n" | |||||
| "smmul %14, %10, %18 \n" | |||||
| "smmul %15, %13, %18 \n" | |||||
| "str %8, %1 \n" | |||||
| "str %11, %5 \n" | |||||
| "sub %9, %9, %16, lsr #1 \n" | |||||
| "sub %12, %12, %16, lsr #1 \n" | |||||
| "smlabb %10, %14, %17, %10 \n" | |||||
| "smlabb %13, %15, %17, %13 \n" | |||||
| "str %9, %2 \n" | |||||
| "str %12, %6 \n" | |||||
| "sub %10, %10, %16, lsr #1 \n" | |||||
| "sub %13, %13, %16, lsr #1 \n" | |||||
| "str %10, %3 \n" | |||||
| "str %13, %7 \n" | |||||
| : "=m"(values[0]), "=m"(values[1]), | : "=m"(values[0]), "=m"(values[1]), | ||||
| "=m"(values[2]), "=m"(values[3]), | "=m"(values[2]), "=m"(values[3]), | ||||
| "=&r"(v0), "=&r"(v1), "=&r"(v2), "=&r"(v3), | |||||
| "+&r"(code) | |||||
| : "r"(levels - 1), "r"(-levels), "r"(ff_inverse[levels]) | |||||
| : "cc"); | |||||
| "=m"(values[4]), "=m"(values[5]), | |||||
| "=m"(values[6]), "=m"(values[7]), | |||||
| "=&r"(v0), "=&r"(v1), "=&r"(v2), | |||||
| "=&r"(v3), "=&r"(v4), "=&r"(v5), | |||||
| "+&r"(code1), "+&r"(code2) | |||||
| : "r"(levels - 1), "r"(-levels), "r"(ff_inverse[levels])); | |||||
| return v3; | |||||
| return code1 | code2; | |||||
| } | } | ||||
| #endif | #endif | ||||
| @@ -48,7 +48,7 @@ void avcodec_sample_fmt_string (char *buf, int buf_size, int sample_fmt) | |||||
| } | } | ||||
| #endif | #endif | ||||
| int64_t avcodec_guess_channel_layout(int nb_channels, enum CodecID codec_id, const char *fmt_name) | |||||
| uint64_t avcodec_guess_channel_layout(int nb_channels, enum CodecID codec_id, const char *fmt_name) | |||||
| { | { | ||||
| switch(nb_channels) { | switch(nb_channels) { | ||||
| case 1: return AV_CH_LAYOUT_MONO; | case 1: return AV_CH_LAYOUT_MONO; | ||||
| @@ -80,7 +80,7 @@ int avcodec_channel_layout_num_channels(int64_t channel_layout); | |||||
| * @param fmt_name Format name, or NULL if unknown | * @param fmt_name Format name, or NULL if unknown | ||||
| * @return Channel layout mask | * @return Channel layout mask | ||||
| */ | */ | ||||
| int64_t avcodec_guess_channel_layout(int nb_channels, enum CodecID codec_id, const char *fmt_name); | |||||
| uint64_t avcodec_guess_channel_layout(int nb_channels, enum CodecID codec_id, const char *fmt_name); | |||||
| struct AVAudioConvert; | struct AVAudioConvert; | ||||
| typedef struct AVAudioConvert AVAudioConvert; | typedef struct AVAudioConvert AVAudioConvert; | ||||
| @@ -2758,14 +2758,14 @@ typedef struct AVCodecContext { | |||||
| * - encoding: set by user. | * - encoding: set by user. | ||||
| * - decoding: set by user, may be overwritten by libavcodec. | * - decoding: set by user, may be overwritten by libavcodec. | ||||
| */ | */ | ||||
| int64_t channel_layout; | |||||
| uint64_t channel_layout; | |||||
| /** | /** | ||||
| * Request decoder to use this channel layout if it can (0 for default) | * Request decoder to use this channel layout if it can (0 for default) | ||||
| * - encoding: unused | * - encoding: unused | ||||
| * - decoding: Set by user. | * - decoding: Set by user. | ||||
| */ | */ | ||||
| int64_t request_channel_layout; | |||||
| uint64_t request_channel_layout; | |||||
| /** | /** | ||||
| * Ratecontrol attempt to use, at maximum, <value> of what can be used without an underflow. | * Ratecontrol attempt to use, at maximum, <value> of what can be used without an underflow. | ||||
| @@ -3122,7 +3122,7 @@ typedef struct AVCodec { | |||||
| const char *long_name; | const char *long_name; | ||||
| const int *supported_samplerates; ///< array of supported audio samplerates, or NULL if unknown, array is terminated by 0 | const int *supported_samplerates; ///< array of supported audio samplerates, or NULL if unknown, array is terminated by 0 | ||||
| const enum AVSampleFormat *sample_fmts; ///< array of supported sample formats, or NULL if unknown, array is terminated by -1 | const enum AVSampleFormat *sample_fmts; ///< array of supported sample formats, or NULL if unknown, array is terminated by -1 | ||||
| const int64_t *channel_layouts; ///< array of support channel layouts, or NULL if unknown. array is terminated by 0 | |||||
| const uint64_t *channel_layouts; ///< array of support channel layouts, or NULL if unknown. array is terminated by 0 | |||||
| uint8_t max_lowres; ///< maximum value for lowres supported by the decoder | uint8_t max_lowres; ///< maximum value for lowres supported by the decoder | ||||
| const AVClass *priv_class; ///< AVClass for the private context | const AVClass *priv_class; ///< AVClass for the private context | ||||
| const AVProfile *profiles; ///< array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN} | const AVProfile *profiles; ///< array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN} | ||||
| @@ -128,7 +128,7 @@ static const int dca_ext_audio_descr_mask[] = { | |||||
| * All 2 channel configurations -> AV_CH_LAYOUT_STEREO | * All 2 channel configurations -> AV_CH_LAYOUT_STEREO | ||||
| */ | */ | ||||
| static const int64_t dca_core_channel_layout[] = { | |||||
| static const uint64_t dca_core_channel_layout[] = { | |||||
| AV_CH_FRONT_CENTER, ///< 1, A | AV_CH_FRONT_CENTER, ///< 1, A | ||||
| AV_CH_LAYOUT_STEREO, ///< 2, A + B (dual mono) | AV_CH_LAYOUT_STEREO, ///< 2, A + B (dual mono) | ||||
| AV_CH_LAYOUT_STEREO, ///< 2, L + R (stereo) | AV_CH_LAYOUT_STEREO, ///< 2, L + R (stereo) | ||||
| @@ -1037,7 +1037,7 @@ static void dca_downmix(float *samples, int srcfmt, | |||||
| } | } | ||||
| #ifndef decode_blockcode | |||||
| #ifndef decode_blockcodes | |||||
| /* Very compact version of the block code decoder that does not use table | /* Very compact version of the block code decoder that does not use table | ||||
| * look-up but is slightly slower */ | * look-up but is slightly slower */ | ||||
| static int decode_blockcode(int code, int levels, int *values) | static int decode_blockcode(int code, int levels, int *values) | ||||
| @@ -1051,12 +1051,13 @@ static int decode_blockcode(int code, int levels, int *values) | |||||
| code = div; | code = div; | ||||
| } | } | ||||
| if (code == 0) | |||||
| return 0; | |||||
| else { | |||||
| av_log(NULL, AV_LOG_ERROR, "ERROR: block code look-up failed\n"); | |||||
| return AVERROR_INVALIDDATA; | |||||
| } | |||||
| return code; | |||||
| } | |||||
| static int decode_blockcodes(int code1, int code2, int levels, int *values) | |||||
| { | |||||
| return decode_blockcode(code1, levels, values) | | |||||
| decode_blockcode(code2, levels, values + 4); | |||||
| } | } | ||||
| #endif | #endif | ||||
| @@ -1126,16 +1127,20 @@ static int dca_subsubframe(DCAContext * s, int base_channel, int block_index) | |||||
| if (abits >= 11 || !dca_smpl_bitalloc[abits].vlc[sel].table){ | if (abits >= 11 || !dca_smpl_bitalloc[abits].vlc[sel].table){ | ||||
| if (abits <= 7){ | if (abits <= 7){ | ||||
| /* Block code */ | /* Block code */ | ||||
| int block_code1, block_code2, size, levels; | |||||
| int block_code1, block_code2, size, levels, err; | |||||
| size = abits_sizes[abits-1]; | size = abits_sizes[abits-1]; | ||||
| levels = abits_levels[abits-1]; | levels = abits_levels[abits-1]; | ||||
| block_code1 = get_bits(&s->gb, size); | block_code1 = get_bits(&s->gb, size); | ||||
| /* FIXME Should test return value */ | |||||
| decode_blockcode(block_code1, levels, block); | |||||
| block_code2 = get_bits(&s->gb, size); | block_code2 = get_bits(&s->gb, size); | ||||
| decode_blockcode(block_code2, levels, &block[4]); | |||||
| err = decode_blockcodes(block_code1, block_code2, | |||||
| levels, block); | |||||
| if (err) { | |||||
| av_log(s->avctx, AV_LOG_ERROR, | |||||
| "ERROR: block code look-up failed\n"); | |||||
| return AVERROR_INVALIDDATA; | |||||
| } | |||||
| }else{ | }else{ | ||||
| /* no coding */ | /* no coding */ | ||||
| for (m = 0; m < 8; m++) | for (m = 0; m < 8; m++) | ||||
| @@ -107,7 +107,7 @@ static int truehd_channels(int chanmap) | |||||
| return channels; | return channels; | ||||
| } | } | ||||
| int64_t ff_truehd_layout(int chanmap) | |||||
| uint64_t ff_truehd_layout(int chanmap) | |||||
| { | { | ||||
| int layout = 0, i; | int layout = 0, i; | ||||
| @@ -54,7 +54,7 @@ typedef struct MLPHeaderInfo | |||||
| int ff_mlp_read_major_sync(void *log, MLPHeaderInfo *mh, GetBitContext *gb); | int ff_mlp_read_major_sync(void *log, MLPHeaderInfo *mh, GetBitContext *gb); | ||||
| int64_t ff_truehd_layout(int chanmap); | |||||
| uint64_t ff_truehd_layout(int chanmap); | |||||
| extern const uint64_t ff_mlp_layout[32]; | extern const uint64_t ff_mlp_layout[32]; | ||||
| @@ -525,7 +525,7 @@ int ff_thread_decode_frame(AVCodecContext *avctx, | |||||
| if (fctx->next_decoding >= (avctx->thread_count-1)) fctx->delaying = 0; | if (fctx->next_decoding >= (avctx->thread_count-1)) fctx->delaying = 0; | ||||
| *got_picture_ptr=0; | *got_picture_ptr=0; | ||||
| return 0; | |||||
| return avpkt->size; | |||||
| } | } | ||||
| /* | /* | ||||
| @@ -566,7 +566,8 @@ int ff_thread_decode_frame(AVCodecContext *avctx, | |||||
| fctx->next_finished = finished; | fctx->next_finished = finished; | ||||
| return p->result; | |||||
| /* return the size of the consumed packet if no error occurred */ | |||||
| return (p->result >= 0) ? avpkt->size : p->result; | |||||
| } | } | ||||
| void ff_thread_report_progress(AVFrame *f, int n, int field) | void ff_thread_report_progress(AVFrame *f, int n, int field) | ||||
| @@ -42,6 +42,9 @@ void ff_thread_flush(AVCodecContext *avctx); | |||||
| * Submits a new frame to a decoding thread. | * Submits a new frame to a decoding thread. | ||||
| * Returns the next available frame in picture. *got_picture_ptr | * Returns the next available frame in picture. *got_picture_ptr | ||||
| * will be 0 if none is available. | * will be 0 if none is available. | ||||
| * The return value on success is the size of the consumed packet for | |||||
| * compatiblity with avcodec_decode_video2(). This means the decoder | |||||
| * has to consume the full packet. | |||||
| * | * | ||||
| * Parameters are the same as avcodec_decode_video2(). | * Parameters are the same as avcodec_decode_video2(). | ||||
| */ | */ | ||||
| @@ -22,7 +22,7 @@ | |||||
| #define LIBAVCODEC_VERSION_MAJOR 53 | #define LIBAVCODEC_VERSION_MAJOR 53 | ||||
| #define LIBAVCODEC_VERSION_MINOR 37 | #define LIBAVCODEC_VERSION_MINOR 37 | ||||
| #define LIBAVCODEC_VERSION_MICRO 0 | |||||
| #define LIBAVCODEC_VERSION_MICRO 1 | |||||
| #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ | #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ | ||||
| LIBAVCODEC_VERSION_MINOR, \ | LIBAVCODEC_VERSION_MINOR, \ | ||||
| @@ -27,7 +27,7 @@ extern const float ff_vorbis_floor1_inverse_db_table[256]; | |||||
| extern const float * const ff_vorbis_vwin[8]; | extern const float * const ff_vorbis_vwin[8]; | ||||
| extern const uint8_t ff_vorbis_channel_layout_offsets[8][8]; | extern const uint8_t ff_vorbis_channel_layout_offsets[8][8]; | ||||
| extern const uint8_t ff_vorbis_encoding_channel_layout_offsets[8][8]; | extern const uint8_t ff_vorbis_encoding_channel_layout_offsets[8][8]; | ||||
| extern const int64_t ff_vorbis_channel_layouts[9]; | |||||
| extern const uint64_t ff_vorbis_channel_layouts[9]; | |||||
| typedef struct { | typedef struct { | ||||
| uint16_t x; | uint16_t x; | ||||
| @@ -44,7 +44,7 @@ const uint8_t ff_vorbis_encoding_channel_layout_offsets[8][8] = { | |||||
| { 0, 2, 1, 6, 7, 4, 5, 3 }, | { 0, 2, 1, 6, 7, 4, 5, 3 }, | ||||
| }; | }; | ||||
| const int64_t ff_vorbis_channel_layouts[9] = { | |||||
| const uint64_t ff_vorbis_channel_layouts[9] = { | |||||
| AV_CH_LAYOUT_MONO, | AV_CH_LAYOUT_MONO, | ||||
| AV_CH_LAYOUT_STEREO, | AV_CH_LAYOUT_STEREO, | ||||
| AV_CH_LAYOUT_SURROUND, | AV_CH_LAYOUT_SURROUND, | ||||
| @@ -143,7 +143,7 @@ switch(format) {\ | |||||
| case FORMAT_F32: s->reorder_func = alsa_reorder_f32_out_ ##layout; break;\ | case FORMAT_F32: s->reorder_func = alsa_reorder_f32_out_ ##layout; break;\ | ||||
| } | } | ||||
| static av_cold int find_reorder_func(AlsaData *s, int codec_id, int64_t layout, int out) | |||||
| static av_cold int find_reorder_func(AlsaData *s, int codec_id, uint64_t layout, int out) | |||||
| { | { | ||||
| int format; | int format; | ||||
| @@ -194,7 +194,7 @@ av_cold int ff_alsa_open(AVFormatContext *ctx, snd_pcm_stream_t mode, | |||||
| snd_pcm_t *h; | snd_pcm_t *h; | ||||
| snd_pcm_hw_params_t *hw_params; | snd_pcm_hw_params_t *hw_params; | ||||
| snd_pcm_uframes_t buffer_size, period_size; | snd_pcm_uframes_t buffer_size, period_size; | ||||
| int64_t layout = ctx->streams[0]->codec->channel_layout; | |||||
| uint64_t layout = ctx->streams[0]->codec->channel_layout; | |||||
| if (ctx->filename[0] == 0) audio_device = "default"; | if (ctx->filename[0] == 0) audio_device = "default"; | ||||
| else audio_device = ctx->filename; | else audio_device = ctx->filename; | ||||
| @@ -30,7 +30,7 @@ | |||||
| typedef struct { | typedef struct { | ||||
| const AVClass *class; | const AVClass *class; | ||||
| char *channel_layout_str; | char *channel_layout_str; | ||||
| int64_t channel_layout; | |||||
| uint64_t channel_layout; | |||||
| char *sample_rate_str; | char *sample_rate_str; | ||||
| int sample_rate; | int sample_rate; | ||||
| int nb_samples; ///< number of samples per requested frame | int nb_samples; ///< number of samples per requested frame | ||||
| @@ -473,7 +473,7 @@ AVFilterBufferRef *avfilter_get_audio_buffer(AVFilterLink *link, | |||||
| AVFilterBufferRef * | AVFilterBufferRef * | ||||
| avfilter_get_audio_buffer_ref_from_arrays(uint8_t *data[8], int linesize[8], int perms, | avfilter_get_audio_buffer_ref_from_arrays(uint8_t *data[8], int linesize[8], int perms, | ||||
| int nb_samples, enum AVSampleFormat sample_fmt, | int nb_samples, enum AVSampleFormat sample_fmt, | ||||
| int64_t channel_layout, int planar) | |||||
| uint64_t channel_layout, int planar) | |||||
| { | { | ||||
| AVFilterBuffer *samples = av_mallocz(sizeof(AVFilterBuffer)); | AVFilterBuffer *samples = av_mallocz(sizeof(AVFilterBuffer)); | ||||
| AVFilterBufferRef *samplesref = av_mallocz(sizeof(AVFilterBufferRef)); | AVFilterBufferRef *samplesref = av_mallocz(sizeof(AVFilterBufferRef)); | ||||
| @@ -30,7 +30,7 @@ | |||||
| #define LIBAVFILTER_VERSION_MAJOR 2 | #define LIBAVFILTER_VERSION_MAJOR 2 | ||||
| #define LIBAVFILTER_VERSION_MINOR 49 | #define LIBAVFILTER_VERSION_MINOR 49 | ||||
| #define LIBAVFILTER_VERSION_MICRO 0 | |||||
| #define LIBAVFILTER_VERSION_MICRO 1 | |||||
| #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ | #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ | ||||
| LIBAVFILTER_VERSION_MINOR, \ | LIBAVFILTER_VERSION_MINOR, \ | ||||
| @@ -110,7 +110,7 @@ typedef struct AVFilterBuffer { | |||||
| * per reference properties must be separated out. | * per reference properties must be separated out. | ||||
| */ | */ | ||||
| typedef struct AVFilterBufferRefAudioProps { | typedef struct AVFilterBufferRefAudioProps { | ||||
| int64_t channel_layout; ///< channel layout of audio buffer | |||||
| uint64_t channel_layout; ///< channel layout of audio buffer | |||||
| int nb_samples; ///< number of audio samples per channel | int nb_samples; ///< number of audio samples per channel | ||||
| int sample_rate; ///< audio buffer sample rate | int sample_rate; ///< audio buffer sample rate | ||||
| int planar; ///< audio buffer - planar or packed | int planar; ///< audio buffer - planar or packed | ||||
| @@ -641,7 +641,7 @@ struct AVFilterLink { | |||||
| int h; ///< agreed upon image height | int h; ///< agreed upon image height | ||||
| AVRational sample_aspect_ratio; ///< agreed upon sample aspect ratio | AVRational sample_aspect_ratio; ///< agreed upon sample aspect ratio | ||||
| /* These parameters apply only to audio */ | /* These parameters apply only to audio */ | ||||
| int64_t channel_layout; ///< channel layout of current buffer (see libavutil/audioconvert.h) | |||||
| uint64_t channel_layout; ///< channel layout of current buffer (see libavutil/audioconvert.h) | |||||
| #if LIBAVFILTER_VERSION_MAJOR < 3 | #if LIBAVFILTER_VERSION_MAJOR < 3 | ||||
| int64_t sample_rate; ///< samples per second | int64_t sample_rate; ///< samples per second | ||||
| #else | #else | ||||
| @@ -772,8 +772,7 @@ AVFilterBufferRef *avfilter_get_audio_buffer(AVFilterLink *link, int perms, | |||||
| AVFilterBufferRef * | AVFilterBufferRef * | ||||
| avfilter_get_audio_buffer_ref_from_arrays(uint8_t *data[8], int linesize[8], int perms, | avfilter_get_audio_buffer_ref_from_arrays(uint8_t *data[8], int linesize[8], int perms, | ||||
| int nb_samples, enum AVSampleFormat sample_fmt, | int nb_samples, enum AVSampleFormat sample_fmt, | ||||
| int64_t channel_layout, int planar); | |||||
| uint64_t channel_layout, int planar); | |||||
| /** | /** | ||||
| * Request an input frame from the filter at the other end of the link. | * Request an input frame from the filter at the other end of the link. | ||||
| * | * | ||||
| @@ -32,5 +32,5 @@ AVOutputFormat ff_null_muxer = { | |||||
| .audio_codec = AV_NE(CODEC_ID_PCM_S16BE, CODEC_ID_PCM_S16LE), | .audio_codec = AV_NE(CODEC_ID_PCM_S16BE, CODEC_ID_PCM_S16LE), | ||||
| .video_codec = CODEC_ID_RAWVIDEO, | .video_codec = CODEC_ID_RAWVIDEO, | ||||
| .write_packet = null_write_packet, | .write_packet = null_write_packet, | ||||
| .flags = AVFMT_NOFILE | AVFMT_RAWPICTURE | AVFMT_NOTIMESTAMPS, | |||||
| .flags = AVFMT_NOFILE | AVFMT_NOTIMESTAMPS, | |||||
| }; | }; | ||||
| @@ -60,7 +60,7 @@ static const char *get_channel_name(int channel_id) | |||||
| static const struct { | static const struct { | ||||
| const char *name; | const char *name; | ||||
| int nb_channels; | int nb_channels; | ||||
| int64_t layout; | |||||
| uint64_t layout; | |||||
| } channel_layout_map[] = { | } channel_layout_map[] = { | ||||
| { "mono", 1, AV_CH_LAYOUT_MONO }, | { "mono", 1, AV_CH_LAYOUT_MONO }, | ||||
| { "stereo", 2, AV_CH_LAYOUT_STEREO }, | { "stereo", 2, AV_CH_LAYOUT_STEREO }, | ||||
| @@ -76,7 +76,7 @@ static const struct { | |||||
| { 0 } | { 0 } | ||||
| }; | }; | ||||
| static int64_t get_channel_layout_single(const char *name, int name_len) | |||||
| static uint64_t get_channel_layout_single(const char *name, int name_len) | |||||
| { | { | ||||
| int i; | int i; | ||||
| char *end; | char *end; | ||||
| @@ -102,7 +102,7 @@ static int64_t get_channel_layout_single(const char *name, int name_len) | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| int64_t av_get_channel_layout(const char *name) | |||||
| uint64_t av_get_channel_layout(const char *name) | |||||
| { | { | ||||
| const char *n, *e; | const char *n, *e; | ||||
| const char *name_end = name + strlen(name); | const char *name_end = name + strlen(name); | ||||
| @@ -119,7 +119,7 @@ int64_t av_get_channel_layout(const char *name) | |||||
| } | } | ||||
| void av_get_channel_layout_string(char *buf, int buf_size, | void av_get_channel_layout_string(char *buf, int buf_size, | ||||
| int nb_channels, int64_t channel_layout) | |||||
| int nb_channels, uint64_t channel_layout) | |||||
| { | { | ||||
| int i; | int i; | ||||
| @@ -138,7 +138,7 @@ void av_get_channel_layout_string(char *buf, int buf_size, | |||||
| int i, ch; | int i, ch; | ||||
| av_strlcat(buf, " (", buf_size); | av_strlcat(buf, " (", buf_size); | ||||
| for (i = 0, ch = 0; i < 64; i++) { | for (i = 0, ch = 0; i < 64; i++) { | ||||
| if ((channel_layout & (1L << i))) { | |||||
| if ((channel_layout & (UINT64_C(1) << i))) { | |||||
| const char *name = get_channel_name(i); | const char *name = get_channel_name(i); | ||||
| if (name) { | if (name) { | ||||
| if (ch > 0) | if (ch > 0) | ||||
| @@ -152,7 +152,7 @@ void av_get_channel_layout_string(char *buf, int buf_size, | |||||
| } | } | ||||
| } | } | ||||
| int av_get_channel_layout_nb_channels(int64_t channel_layout) | |||||
| int av_get_channel_layout_nb_channels(uint64_t channel_layout) | |||||
| { | { | ||||
| int count; | int count; | ||||
| uint64_t x = channel_layout; | uint64_t x = channel_layout; | ||||
| @@ -62,7 +62,7 @@ | |||||
| /** Channel mask value used for AVCodecContext.request_channel_layout | /** Channel mask value used for AVCodecContext.request_channel_layout | ||||
| to indicate that the user requests the channel order of the decoder output | to indicate that the user requests the channel order of the decoder output | ||||
| to be the native codec channel order. */ | to be the native codec channel order. */ | ||||
| #define AV_CH_LAYOUT_NATIVE 0x8000000000000000LL | |||||
| #define AV_CH_LAYOUT_NATIVE 0x8000000000000000ULL | |||||
| /** | /** | ||||
| * @} | * @} | ||||
| @@ -104,7 +104,7 @@ | |||||
| * AV_CH_* macros). | * AV_CH_* macros). | ||||
| + Example: "stereo+FC" = "2+FC" = "2c+1c" = "0x7" | + Example: "stereo+FC" = "2+FC" = "2c+1c" = "0x7" | ||||
| */ | */ | ||||
| int64_t av_get_channel_layout(const char *name); | |||||
| uint64_t av_get_channel_layout(const char *name); | |||||
| /** | /** | ||||
| * Return a description of a channel layout. | * Return a description of a channel layout. | ||||
| @@ -113,12 +113,12 @@ int64_t av_get_channel_layout(const char *name); | |||||
| * @param buf put here the string containing the channel layout | * @param buf put here the string containing the channel layout | ||||
| * @param buf_size size in bytes of the buffer | * @param buf_size size in bytes of the buffer | ||||
| */ | */ | ||||
| void av_get_channel_layout_string(char *buf, int buf_size, int nb_channels, int64_t channel_layout); | |||||
| void av_get_channel_layout_string(char *buf, int buf_size, int nb_channels, uint64_t channel_layout); | |||||
| /** | /** | ||||
| * Return the number of channels in the channel layout. | * Return the number of channels in the channel layout. | ||||
| */ | */ | ||||
| int av_get_channel_layout_nb_channels(int64_t channel_layout); | |||||
| int av_get_channel_layout_nb_channels(uint64_t channel_layout); | |||||
| /** | /** | ||||
| * Return default channel layout for a given number of channels. | * Return default channel layout for a given number of channels. | ||||
| @@ -154,7 +154,7 @@ | |||||
| #define LIBAVUTIL_VERSION_MAJOR 51 | #define LIBAVUTIL_VERSION_MAJOR 51 | ||||
| #define LIBAVUTIL_VERSION_MINOR 29 | #define LIBAVUTIL_VERSION_MINOR 29 | ||||
| #define LIBAVUTIL_VERSION_MICRO 0 | |||||
| #define LIBAVUTIL_VERSION_MICRO 1 | |||||
| #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ | #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ | ||||
| LIBAVUTIL_VERSION_MINOR, \ | LIBAVUTIL_VERSION_MINOR, \ | ||||
| @@ -220,8 +220,8 @@ static av_always_inline av_const int av_popcount_c(uint32_t x) | |||||
| return (x + (x >> 16)) & 0x3F; | return (x + (x >> 16)) & 0x3F; | ||||
| } | } | ||||
| #define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((d) << 24)) | |||||
| #define MKBETAG(a,b,c,d) ((d) | ((c) << 8) | ((b) << 16) | ((a) << 24)) | |||||
| #define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((unsigned)(d) << 24)) | |||||
| #define MKBETAG(a,b,c,d) ((d) | ((c) << 8) | ((b) << 16) | ((unsigned)(a) << 24)) | |||||
| /** | /** | ||||
| * Convert a UTF-8 character (up to 4 bytes) to its 32-bit UCS-4 encoded form. | * Convert a UTF-8 character (up to 4 bytes) to its 32-bit UCS-4 encoded form. | ||||
| @@ -38,6 +38,19 @@ FATE_AAC += fate-aac-ap05_48 | |||||
| fate-aac-ap05_48: CMD = pcm -i $(SAMPLES)/aac/ap05_48.mp4 | fate-aac-ap05_48: CMD = pcm -i $(SAMPLES)/aac/ap05_48.mp4 | ||||
| fate-aac-ap05_48: REF = $(SAMPLES)/aac/ap05_48.s16 | fate-aac-ap05_48: REF = $(SAMPLES)/aac/ap05_48.s16 | ||||
| fate-aac-ct%: CMD = pcm -i $(SAMPLES)/aac/CT_DecoderCheck/$(@:fate-aac-ct-%=%) | |||||
| fate-aac-ct%: REF = $(SAMPLES)/aac/CT_DecoderCheck/aacPlusv2.wav | |||||
| FATE_AAC_CT = sbr_bc-ps_i.3gp \ | |||||
| sbr_bic-ps_i.3gp \ | |||||
| sbr_i-ps_i.aac \ | |||||
| sbr_bc-ps_bc.mp4 \ | |||||
| sbr_bc-ps_i.mp4 \ | |||||
| sbr_i-ps_bic.mp4 \ | |||||
| sbr_i-ps_i.mp4 | |||||
| #FATE_AAC += $(FATE_AAC_CT:%=fate-aac-ct-%) | |||||
| FATE_TESTS += $(FATE_AAC) | FATE_TESTS += $(FATE_AAC) | ||||
| fate-aac: $(FATE_AAC) | fate-aac: $(FATE_AAC) | ||||
| $(FATE_AAC): CMP = oneoff | $(FATE_AAC): CMP = oneoff | ||||