* 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>
| ... | ... |
@@ -2999,7 +2999,7 @@ disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib |
| 2999 | 2999 |
if ! disabled vda; then |
| 3000 | 3000 |
if check_header VideoDecodeAcceleration/VDADecoder.h; then |
| 3001 | 3001 |
enable vda |
| 3002 |
- add_ldflags -framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore |
|
| 3002 |
+ add_extralibs -framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore |
|
| 3003 | 3003 |
fi |
| 3004 | 3004 |
fi |
| 3005 | 3005 |
|
| ... | ... |
@@ -90,7 +90,7 @@ static const uint8_t aac_channel_layout_map[7][5][2] = {
|
| 90 | 90 |
{ { TYPE_CPE, 0 }, { TYPE_SCE, 0 }, { TYPE_LFE, 0 }, { TYPE_CPE, 2 }, { TYPE_CPE, 1 }, },
|
| 91 | 91 |
}; |
| 92 | 92 |
|
| 93 |
-static const int64_t aac_channel_layout[8] = {
|
|
| 93 |
+static const uint64_t aac_channel_layout[8] = {
|
|
| 94 | 94 |
AV_CH_LAYOUT_MONO, |
| 95 | 95 |
AV_CH_LAYOUT_STEREO, |
| 96 | 96 |
AV_CH_LAYOUT_SURROUND, |
| ... | ... |
@@ -77,7 +77,7 @@ static uint8_t exponent_group_tab[2][3][256]; |
| 77 | 77 |
/** |
| 78 | 78 |
* List of supported channel layouts. |
| 79 | 79 |
*/ |
| 80 |
-const int64_t ff_ac3_channel_layouts[19] = {
|
|
| 80 |
+const uint64_t ff_ac3_channel_layouts[19] = {
|
|
| 81 | 81 |
AV_CH_LAYOUT_MONO, |
| 82 | 82 |
AV_CH_LAYOUT_STEREO, |
| 83 | 83 |
AV_CH_LAYOUT_2_1, |
| ... | ... |
@@ -2060,13 +2060,13 @@ av_cold int ff_ac3_encode_close(AVCodecContext *avctx) |
| 2060 | 2060 |
* Set channel information during initialization. |
| 2061 | 2061 |
*/ |
| 2062 | 2062 |
static av_cold int set_channel_info(AC3EncodeContext *s, int channels, |
| 2063 |
- int64_t *channel_layout) |
|
| 2063 |
+ uint64_t *channel_layout) |
|
| 2064 | 2064 |
{
|
| 2065 | 2065 |
int ch_layout; |
| 2066 | 2066 |
|
| 2067 | 2067 |
if (channels < 1 || channels > AC3_MAX_CHANNELS) |
| 2068 | 2068 |
return AVERROR(EINVAL); |
| 2069 |
- if ((uint64_t)*channel_layout > 0x7FF) |
|
| 2069 |
+ if (*channel_layout > 0x7FF) |
|
| 2070 | 2070 |
return AVERROR(EINVAL); |
| 2071 | 2071 |
ch_layout = *channel_layout; |
| 2072 | 2072 |
if (!ch_layout) |
| ... | ... |
@@ -27,38 +27,54 @@ |
| 27 | 27 |
|
| 28 | 28 |
#if HAVE_ARMV6 && HAVE_INLINE_ASM |
| 29 | 29 |
|
| 30 |
-#define decode_blockcode decode_blockcode |
|
| 31 |
-static inline int decode_blockcode(int code, int levels, int *values) |
|
| 30 |
+#define decode_blockcodes decode_blockcodes |
|
| 31 |
+static inline int decode_blockcodes(int code1, int code2, int levels, |
|
| 32 |
+ int *values) |
|
| 32 | 33 |
{
|
| 33 |
- int v0, v1, v2, v3; |
|
| 34 |
+ int v0, v1, v2, v3, v4, v5; |
|
| 34 | 35 |
|
| 35 |
- __asm__ ("smmul %4, %8, %11 \n"
|
|
| 36 |
- "smlabb %8, %4, %10, %8 \n" |
|
| 37 |
- "smmul %5, %4, %11 \n" |
|
| 38 |
- "sub %8, %8, %9, lsr #1 \n" |
|
| 39 |
- "smlabb %4, %5, %10, %4 \n" |
|
| 40 |
- "smmul %6, %5, %11 \n" |
|
| 41 |
- "str %8, %0 \n" |
|
| 42 |
- "sub %4, %4, %9, lsr #1 \n" |
|
| 43 |
- "smlabb %5, %6, %10, %5 \n" |
|
| 44 |
- "smmul %7, %6, %11 \n" |
|
| 45 |
- "str %4, %1 \n" |
|
| 46 |
- "sub %5, %5, %9, lsr #1 \n" |
|
| 47 |
- "smlabb %6, %7, %10, %6 \n" |
|
| 48 |
- "cmp %7, #0 \n" |
|
| 49 |
- "str %5, %2 \n" |
|
| 50 |
- "sub %6, %6, %9, lsr #1 \n" |
|
| 51 |
- "it eq \n" |
|
| 52 |
- "mvneq %7, #0 \n" |
|
| 53 |
- "str %6, %3 \n" |
|
| 36 |
+ __asm__ ("smmul %8, %14, %18 \n"
|
|
| 37 |
+ "smmul %11, %15, %18 \n" |
|
| 38 |
+ "smlabb %14, %8, %17, %14 \n" |
|
| 39 |
+ "smlabb %15, %11, %17, %15 \n" |
|
| 40 |
+ "smmul %9, %8, %18 \n" |
|
| 41 |
+ "smmul %12, %11, %18 \n" |
|
| 42 |
+ "sub %14, %14, %16, lsr #1 \n" |
|
| 43 |
+ "sub %15, %15, %16, lsr #1 \n" |
|
| 44 |
+ "smlabb %8, %9, %17, %8 \n" |
|
| 45 |
+ "smlabb %11, %12, %17, %11 \n" |
|
| 46 |
+ "smmul %10, %9, %18 \n" |
|
| 47 |
+ "smmul %13, %12, %18 \n" |
|
| 48 |
+ "str %14, %0 \n" |
|
| 49 |
+ "str %15, %4 \n" |
|
| 50 |
+ "sub %8, %8, %16, lsr #1 \n" |
|
| 51 |
+ "sub %11, %11, %16, lsr #1 \n" |
|
| 52 |
+ "smlabb %9, %10, %17, %9 \n" |
|
| 53 |
+ "smlabb %12, %13, %17, %12 \n" |
|
| 54 |
+ "smmul %14, %10, %18 \n" |
|
| 55 |
+ "smmul %15, %13, %18 \n" |
|
| 56 |
+ "str %8, %1 \n" |
|
| 57 |
+ "str %11, %5 \n" |
|
| 58 |
+ "sub %9, %9, %16, lsr #1 \n" |
|
| 59 |
+ "sub %12, %12, %16, lsr #1 \n" |
|
| 60 |
+ "smlabb %10, %14, %17, %10 \n" |
|
| 61 |
+ "smlabb %13, %15, %17, %13 \n" |
|
| 62 |
+ "str %9, %2 \n" |
|
| 63 |
+ "str %12, %6 \n" |
|
| 64 |
+ "sub %10, %10, %16, lsr #1 \n" |
|
| 65 |
+ "sub %13, %13, %16, lsr #1 \n" |
|
| 66 |
+ "str %10, %3 \n" |
|
| 67 |
+ "str %13, %7 \n" |
|
| 54 | 68 |
: "=m"(values[0]), "=m"(values[1]), |
| 55 | 69 |
"=m"(values[2]), "=m"(values[3]), |
| 56 |
- "=&r"(v0), "=&r"(v1), "=&r"(v2), "=&r"(v3), |
|
| 57 |
- "+&r"(code) |
|
| 58 |
- : "r"(levels - 1), "r"(-levels), "r"(ff_inverse[levels]) |
|
| 59 |
- : "cc"); |
|
| 70 |
+ "=m"(values[4]), "=m"(values[5]), |
|
| 71 |
+ "=m"(values[6]), "=m"(values[7]), |
|
| 72 |
+ "=&r"(v0), "=&r"(v1), "=&r"(v2), |
|
| 73 |
+ "=&r"(v3), "=&r"(v4), "=&r"(v5), |
|
| 74 |
+ "+&r"(code1), "+&r"(code2) |
|
| 75 |
+ : "r"(levels - 1), "r"(-levels), "r"(ff_inverse[levels])); |
|
| 60 | 76 |
|
| 61 |
- return v3; |
|
| 77 |
+ return code1 | code2; |
|
| 62 | 78 |
} |
| 63 | 79 |
|
| 64 | 80 |
#endif |
| ... | ... |
@@ -48,7 +48,7 @@ void avcodec_sample_fmt_string (char *buf, int buf_size, int sample_fmt) |
| 48 | 48 |
} |
| 49 | 49 |
#endif |
| 50 | 50 |
|
| 51 |
-int64_t avcodec_guess_channel_layout(int nb_channels, enum CodecID codec_id, const char *fmt_name) |
|
| 51 |
+uint64_t avcodec_guess_channel_layout(int nb_channels, enum CodecID codec_id, const char *fmt_name) |
|
| 52 | 52 |
{
|
| 53 | 53 |
switch(nb_channels) {
|
| 54 | 54 |
case 1: return AV_CH_LAYOUT_MONO; |
| ... | ... |
@@ -80,7 +80,7 @@ int avcodec_channel_layout_num_channels(int64_t channel_layout); |
| 80 | 80 |
* @param fmt_name Format name, or NULL if unknown |
| 81 | 81 |
* @return Channel layout mask |
| 82 | 82 |
*/ |
| 83 |
-int64_t avcodec_guess_channel_layout(int nb_channels, enum CodecID codec_id, const char *fmt_name); |
|
| 83 |
+uint64_t avcodec_guess_channel_layout(int nb_channels, enum CodecID codec_id, const char *fmt_name); |
|
| 84 | 84 |
|
| 85 | 85 |
struct AVAudioConvert; |
| 86 | 86 |
typedef struct AVAudioConvert AVAudioConvert; |
| ... | ... |
@@ -2758,14 +2758,14 @@ typedef struct AVCodecContext {
|
| 2758 | 2758 |
* - encoding: set by user. |
| 2759 | 2759 |
* - decoding: set by user, may be overwritten by libavcodec. |
| 2760 | 2760 |
*/ |
| 2761 |
- int64_t channel_layout; |
|
| 2761 |
+ uint64_t channel_layout; |
|
| 2762 | 2762 |
|
| 2763 | 2763 |
/** |
| 2764 | 2764 |
* Request decoder to use this channel layout if it can (0 for default) |
| 2765 | 2765 |
* - encoding: unused |
| 2766 | 2766 |
* - decoding: Set by user. |
| 2767 | 2767 |
*/ |
| 2768 |
- int64_t request_channel_layout; |
|
| 2768 |
+ uint64_t request_channel_layout; |
|
| 2769 | 2769 |
|
| 2770 | 2770 |
/** |
| 2771 | 2771 |
* Ratecontrol attempt to use, at maximum, <value> of what can be used without an underflow. |
| ... | ... |
@@ -3122,7 +3122,7 @@ typedef struct AVCodec {
|
| 3122 | 3122 |
const char *long_name; |
| 3123 | 3123 |
const int *supported_samplerates; ///< array of supported audio samplerates, or NULL if unknown, array is terminated by 0 |
| 3124 | 3124 |
const enum AVSampleFormat *sample_fmts; ///< array of supported sample formats, or NULL if unknown, array is terminated by -1 |
| 3125 |
- const int64_t *channel_layouts; ///< array of support channel layouts, or NULL if unknown. array is terminated by 0 |
|
| 3125 |
+ const uint64_t *channel_layouts; ///< array of support channel layouts, or NULL if unknown. array is terminated by 0 |
|
| 3126 | 3126 |
uint8_t max_lowres; ///< maximum value for lowres supported by the decoder |
| 3127 | 3127 |
const AVClass *priv_class; ///< AVClass for the private context |
| 3128 | 3128 |
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[] = {
|
| 128 | 128 |
* All 2 channel configurations -> AV_CH_LAYOUT_STEREO |
| 129 | 129 |
*/ |
| 130 | 130 |
|
| 131 |
-static const int64_t dca_core_channel_layout[] = {
|
|
| 131 |
+static const uint64_t dca_core_channel_layout[] = {
|
|
| 132 | 132 |
AV_CH_FRONT_CENTER, ///< 1, A |
| 133 | 133 |
AV_CH_LAYOUT_STEREO, ///< 2, A + B (dual mono) |
| 134 | 134 |
AV_CH_LAYOUT_STEREO, ///< 2, L + R (stereo) |
| ... | ... |
@@ -1037,7 +1037,7 @@ static void dca_downmix(float *samples, int srcfmt, |
| 1037 | 1037 |
} |
| 1038 | 1038 |
|
| 1039 | 1039 |
|
| 1040 |
-#ifndef decode_blockcode |
|
| 1040 |
+#ifndef decode_blockcodes |
|
| 1041 | 1041 |
/* Very compact version of the block code decoder that does not use table |
| 1042 | 1042 |
* look-up but is slightly slower */ |
| 1043 | 1043 |
static int decode_blockcode(int code, int levels, int *values) |
| ... | ... |
@@ -1051,12 +1051,13 @@ static int decode_blockcode(int code, int levels, int *values) |
| 1051 | 1051 |
code = div; |
| 1052 | 1052 |
} |
| 1053 | 1053 |
|
| 1054 |
- if (code == 0) |
|
| 1055 |
- return 0; |
|
| 1056 |
- else {
|
|
| 1057 |
- av_log(NULL, AV_LOG_ERROR, "ERROR: block code look-up failed\n"); |
|
| 1058 |
- return AVERROR_INVALIDDATA; |
|
| 1059 |
- } |
|
| 1054 |
+ return code; |
|
| 1055 |
+} |
|
| 1056 |
+ |
|
| 1057 |
+static int decode_blockcodes(int code1, int code2, int levels, int *values) |
|
| 1058 |
+{
|
|
| 1059 |
+ return decode_blockcode(code1, levels, values) | |
|
| 1060 |
+ decode_blockcode(code2, levels, values + 4); |
|
| 1060 | 1061 |
} |
| 1061 | 1062 |
#endif |
| 1062 | 1063 |
|
| ... | ... |
@@ -1126,16 +1127,20 @@ static int dca_subsubframe(DCAContext * s, int base_channel, int block_index) |
| 1126 | 1126 |
if (abits >= 11 || !dca_smpl_bitalloc[abits].vlc[sel].table){
|
| 1127 | 1127 |
if (abits <= 7){
|
| 1128 | 1128 |
/* Block code */ |
| 1129 |
- int block_code1, block_code2, size, levels; |
|
| 1129 |
+ int block_code1, block_code2, size, levels, err; |
|
| 1130 | 1130 |
|
| 1131 | 1131 |
size = abits_sizes[abits-1]; |
| 1132 | 1132 |
levels = abits_levels[abits-1]; |
| 1133 | 1133 |
|
| 1134 | 1134 |
block_code1 = get_bits(&s->gb, size); |
| 1135 |
- /* FIXME Should test return value */ |
|
| 1136 |
- decode_blockcode(block_code1, levels, block); |
|
| 1137 | 1135 |
block_code2 = get_bits(&s->gb, size); |
| 1138 |
- decode_blockcode(block_code2, levels, &block[4]); |
|
| 1136 |
+ err = decode_blockcodes(block_code1, block_code2, |
|
| 1137 |
+ levels, block); |
|
| 1138 |
+ if (err) {
|
|
| 1139 |
+ av_log(s->avctx, AV_LOG_ERROR, |
|
| 1140 |
+ "ERROR: block code look-up failed\n"); |
|
| 1141 |
+ return AVERROR_INVALIDDATA; |
|
| 1142 |
+ } |
|
| 1139 | 1143 |
}else{
|
| 1140 | 1144 |
/* no coding */ |
| 1141 | 1145 |
for (m = 0; m < 8; m++) |
| ... | ... |
@@ -525,7 +525,7 @@ int ff_thread_decode_frame(AVCodecContext *avctx, |
| 525 | 525 |
if (fctx->next_decoding >= (avctx->thread_count-1)) fctx->delaying = 0; |
| 526 | 526 |
|
| 527 | 527 |
*got_picture_ptr=0; |
| 528 |
- return 0; |
|
| 528 |
+ return avpkt->size; |
|
| 529 | 529 |
} |
| 530 | 530 |
|
| 531 | 531 |
/* |
| ... | ... |
@@ -566,7 +566,8 @@ int ff_thread_decode_frame(AVCodecContext *avctx, |
| 566 | 566 |
|
| 567 | 567 |
fctx->next_finished = finished; |
| 568 | 568 |
|
| 569 |
- return p->result; |
|
| 569 |
+ /* return the size of the consumed packet if no error occurred */ |
|
| 570 |
+ return (p->result >= 0) ? avpkt->size : p->result; |
|
| 570 | 571 |
} |
| 571 | 572 |
|
| 572 | 573 |
void ff_thread_report_progress(AVFrame *f, int n, int field) |
| ... | ... |
@@ -42,6 +42,9 @@ void ff_thread_flush(AVCodecContext *avctx); |
| 42 | 42 |
* Submits a new frame to a decoding thread. |
| 43 | 43 |
* Returns the next available frame in picture. *got_picture_ptr |
| 44 | 44 |
* will be 0 if none is available. |
| 45 |
+ * The return value on success is the size of the consumed packet for |
|
| 46 |
+ * compatiblity with avcodec_decode_video2(). This means the decoder |
|
| 47 |
+ * has to consume the full packet. |
|
| 45 | 48 |
* |
| 46 | 49 |
* Parameters are the same as avcodec_decode_video2(). |
| 47 | 50 |
*/ |
| ... | ... |
@@ -22,7 +22,7 @@ |
| 22 | 22 |
|
| 23 | 23 |
#define LIBAVCODEC_VERSION_MAJOR 53 |
| 24 | 24 |
#define LIBAVCODEC_VERSION_MINOR 37 |
| 25 |
-#define LIBAVCODEC_VERSION_MICRO 0 |
|
| 25 |
+#define LIBAVCODEC_VERSION_MICRO 1 |
|
| 26 | 26 |
|
| 27 | 27 |
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ |
| 28 | 28 |
LIBAVCODEC_VERSION_MINOR, \ |
| ... | ... |
@@ -27,7 +27,7 @@ extern const float ff_vorbis_floor1_inverse_db_table[256]; |
| 27 | 27 |
extern const float * const ff_vorbis_vwin[8]; |
| 28 | 28 |
extern const uint8_t ff_vorbis_channel_layout_offsets[8][8]; |
| 29 | 29 |
extern const uint8_t ff_vorbis_encoding_channel_layout_offsets[8][8]; |
| 30 |
-extern const int64_t ff_vorbis_channel_layouts[9]; |
|
| 30 |
+extern const uint64_t ff_vorbis_channel_layouts[9]; |
|
| 31 | 31 |
|
| 32 | 32 |
typedef struct {
|
| 33 | 33 |
uint16_t x; |
| ... | ... |
@@ -44,7 +44,7 @@ const uint8_t ff_vorbis_encoding_channel_layout_offsets[8][8] = {
|
| 44 | 44 |
{ 0, 2, 1, 6, 7, 4, 5, 3 },
|
| 45 | 45 |
}; |
| 46 | 46 |
|
| 47 |
-const int64_t ff_vorbis_channel_layouts[9] = {
|
|
| 47 |
+const uint64_t ff_vorbis_channel_layouts[9] = {
|
|
| 48 | 48 |
AV_CH_LAYOUT_MONO, |
| 49 | 49 |
AV_CH_LAYOUT_STEREO, |
| 50 | 50 |
AV_CH_LAYOUT_SURROUND, |
| ... | ... |
@@ -143,7 +143,7 @@ switch(format) {\
|
| 143 | 143 |
case FORMAT_F32: s->reorder_func = alsa_reorder_f32_out_ ##layout; break;\ |
| 144 | 144 |
} |
| 145 | 145 |
|
| 146 |
-static av_cold int find_reorder_func(AlsaData *s, int codec_id, int64_t layout, int out) |
|
| 146 |
+static av_cold int find_reorder_func(AlsaData *s, int codec_id, uint64_t layout, int out) |
|
| 147 | 147 |
{
|
| 148 | 148 |
int format; |
| 149 | 149 |
|
| ... | ... |
@@ -194,7 +194,7 @@ av_cold int ff_alsa_open(AVFormatContext *ctx, snd_pcm_stream_t mode, |
| 194 | 194 |
snd_pcm_t *h; |
| 195 | 195 |
snd_pcm_hw_params_t *hw_params; |
| 196 | 196 |
snd_pcm_uframes_t buffer_size, period_size; |
| 197 |
- int64_t layout = ctx->streams[0]->codec->channel_layout; |
|
| 197 |
+ uint64_t layout = ctx->streams[0]->codec->channel_layout; |
|
| 198 | 198 |
|
| 199 | 199 |
if (ctx->filename[0] == 0) audio_device = "default"; |
| 200 | 200 |
else audio_device = ctx->filename; |
| ... | ... |
@@ -473,7 +473,7 @@ AVFilterBufferRef *avfilter_get_audio_buffer(AVFilterLink *link, |
| 473 | 473 |
AVFilterBufferRef * |
| 474 | 474 |
avfilter_get_audio_buffer_ref_from_arrays(uint8_t *data[8], int linesize[8], int perms, |
| 475 | 475 |
int nb_samples, enum AVSampleFormat sample_fmt, |
| 476 |
- int64_t channel_layout, int planar) |
|
| 476 |
+ uint64_t channel_layout, int planar) |
|
| 477 | 477 |
{
|
| 478 | 478 |
AVFilterBuffer *samples = av_mallocz(sizeof(AVFilterBuffer)); |
| 479 | 479 |
AVFilterBufferRef *samplesref = av_mallocz(sizeof(AVFilterBufferRef)); |
| ... | ... |
@@ -30,7 +30,7 @@ |
| 30 | 30 |
|
| 31 | 31 |
#define LIBAVFILTER_VERSION_MAJOR 2 |
| 32 | 32 |
#define LIBAVFILTER_VERSION_MINOR 49 |
| 33 |
-#define LIBAVFILTER_VERSION_MICRO 0 |
|
| 33 |
+#define LIBAVFILTER_VERSION_MICRO 1 |
|
| 34 | 34 |
|
| 35 | 35 |
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ |
| 36 | 36 |
LIBAVFILTER_VERSION_MINOR, \ |
| ... | ... |
@@ -110,7 +110,7 @@ typedef struct AVFilterBuffer {
|
| 110 | 110 |
* per reference properties must be separated out. |
| 111 | 111 |
*/ |
| 112 | 112 |
typedef struct AVFilterBufferRefAudioProps {
|
| 113 |
- int64_t channel_layout; ///< channel layout of audio buffer |
|
| 113 |
+ uint64_t channel_layout; ///< channel layout of audio buffer |
|
| 114 | 114 |
int nb_samples; ///< number of audio samples per channel |
| 115 | 115 |
int sample_rate; ///< audio buffer sample rate |
| 116 | 116 |
int planar; ///< audio buffer - planar or packed |
| ... | ... |
@@ -641,7 +641,7 @@ struct AVFilterLink {
|
| 641 | 641 |
int h; ///< agreed upon image height |
| 642 | 642 |
AVRational sample_aspect_ratio; ///< agreed upon sample aspect ratio |
| 643 | 643 |
/* These parameters apply only to audio */ |
| 644 |
- int64_t channel_layout; ///< channel layout of current buffer (see libavutil/audioconvert.h) |
|
| 644 |
+ uint64_t channel_layout; ///< channel layout of current buffer (see libavutil/audioconvert.h) |
|
| 645 | 645 |
#if LIBAVFILTER_VERSION_MAJOR < 3 |
| 646 | 646 |
int64_t sample_rate; ///< samples per second |
| 647 | 647 |
#else |
| ... | ... |
@@ -772,8 +772,7 @@ AVFilterBufferRef *avfilter_get_audio_buffer(AVFilterLink *link, int perms, |
| 772 | 772 |
AVFilterBufferRef * |
| 773 | 773 |
avfilter_get_audio_buffer_ref_from_arrays(uint8_t *data[8], int linesize[8], int perms, |
| 774 | 774 |
int nb_samples, enum AVSampleFormat sample_fmt, |
| 775 |
- int64_t channel_layout, int planar); |
|
| 776 |
- |
|
| 775 |
+ uint64_t channel_layout, int planar); |
|
| 777 | 776 |
/** |
| 778 | 777 |
* Request an input frame from the filter at the other end of the link. |
| 779 | 778 |
* |
| ... | ... |
@@ -32,5 +32,5 @@ AVOutputFormat ff_null_muxer = {
|
| 32 | 32 |
.audio_codec = AV_NE(CODEC_ID_PCM_S16BE, CODEC_ID_PCM_S16LE), |
| 33 | 33 |
.video_codec = CODEC_ID_RAWVIDEO, |
| 34 | 34 |
.write_packet = null_write_packet, |
| 35 |
- .flags = AVFMT_NOFILE | AVFMT_RAWPICTURE | AVFMT_NOTIMESTAMPS, |
|
| 35 |
+ .flags = AVFMT_NOFILE | AVFMT_NOTIMESTAMPS, |
|
| 36 | 36 |
}; |
| ... | ... |
@@ -60,7 +60,7 @@ static const char *get_channel_name(int channel_id) |
| 60 | 60 |
static const struct {
|
| 61 | 61 |
const char *name; |
| 62 | 62 |
int nb_channels; |
| 63 |
- int64_t layout; |
|
| 63 |
+ uint64_t layout; |
|
| 64 | 64 |
} channel_layout_map[] = {
|
| 65 | 65 |
{ "mono", 1, AV_CH_LAYOUT_MONO },
|
| 66 | 66 |
{ "stereo", 2, AV_CH_LAYOUT_STEREO },
|
| ... | ... |
@@ -76,7 +76,7 @@ static const struct {
|
| 76 | 76 |
{ 0 }
|
| 77 | 77 |
}; |
| 78 | 78 |
|
| 79 |
-static int64_t get_channel_layout_single(const char *name, int name_len) |
|
| 79 |
+static uint64_t get_channel_layout_single(const char *name, int name_len) |
|
| 80 | 80 |
{
|
| 81 | 81 |
int i; |
| 82 | 82 |
char *end; |
| ... | ... |
@@ -102,7 +102,7 @@ static int64_t get_channel_layout_single(const char *name, int name_len) |
| 102 | 102 |
return 0; |
| 103 | 103 |
} |
| 104 | 104 |
|
| 105 |
-int64_t av_get_channel_layout(const char *name) |
|
| 105 |
+uint64_t av_get_channel_layout(const char *name) |
|
| 106 | 106 |
{
|
| 107 | 107 |
const char *n, *e; |
| 108 | 108 |
const char *name_end = name + strlen(name); |
| ... | ... |
@@ -119,7 +119,7 @@ int64_t av_get_channel_layout(const char *name) |
| 119 | 119 |
} |
| 120 | 120 |
|
| 121 | 121 |
void av_get_channel_layout_string(char *buf, int buf_size, |
| 122 |
- int nb_channels, int64_t channel_layout) |
|
| 122 |
+ int nb_channels, uint64_t channel_layout) |
|
| 123 | 123 |
{
|
| 124 | 124 |
int i; |
| 125 | 125 |
|
| ... | ... |
@@ -138,7 +138,7 @@ void av_get_channel_layout_string(char *buf, int buf_size, |
| 138 | 138 |
int i, ch; |
| 139 | 139 |
av_strlcat(buf, " (", buf_size);
|
| 140 | 140 |
for (i = 0, ch = 0; i < 64; i++) {
|
| 141 |
- if ((channel_layout & (1L << i))) {
|
|
| 141 |
+ if ((channel_layout & (UINT64_C(1) << i))) {
|
|
| 142 | 142 |
const char *name = get_channel_name(i); |
| 143 | 143 |
if (name) {
|
| 144 | 144 |
if (ch > 0) |
| ... | ... |
@@ -152,7 +152,7 @@ void av_get_channel_layout_string(char *buf, int buf_size, |
| 152 | 152 |
} |
| 153 | 153 |
} |
| 154 | 154 |
|
| 155 |
-int av_get_channel_layout_nb_channels(int64_t channel_layout) |
|
| 155 |
+int av_get_channel_layout_nb_channels(uint64_t channel_layout) |
|
| 156 | 156 |
{
|
| 157 | 157 |
int count; |
| 158 | 158 |
uint64_t x = channel_layout; |
| ... | ... |
@@ -62,7 +62,7 @@ |
| 62 | 62 |
/** Channel mask value used for AVCodecContext.request_channel_layout |
| 63 | 63 |
to indicate that the user requests the channel order of the decoder output |
| 64 | 64 |
to be the native codec channel order. */ |
| 65 |
-#define AV_CH_LAYOUT_NATIVE 0x8000000000000000LL |
|
| 65 |
+#define AV_CH_LAYOUT_NATIVE 0x8000000000000000ULL |
|
| 66 | 66 |
|
| 67 | 67 |
/** |
| 68 | 68 |
* @} |
| ... | ... |
@@ -104,7 +104,7 @@ |
| 104 | 104 |
* AV_CH_* macros). |
| 105 | 105 |
+ Example: "stereo+FC" = "2+FC" = "2c+1c" = "0x7" |
| 106 | 106 |
*/ |
| 107 |
-int64_t av_get_channel_layout(const char *name); |
|
| 107 |
+uint64_t av_get_channel_layout(const char *name); |
|
| 108 | 108 |
|
| 109 | 109 |
/** |
| 110 | 110 |
* Return a description of a channel layout. |
| ... | ... |
@@ -113,12 +113,12 @@ int64_t av_get_channel_layout(const char *name); |
| 113 | 113 |
* @param buf put here the string containing the channel layout |
| 114 | 114 |
* @param buf_size size in bytes of the buffer |
| 115 | 115 |
*/ |
| 116 |
-void av_get_channel_layout_string(char *buf, int buf_size, int nb_channels, int64_t channel_layout); |
|
| 116 |
+void av_get_channel_layout_string(char *buf, int buf_size, int nb_channels, uint64_t channel_layout); |
|
| 117 | 117 |
|
| 118 | 118 |
/** |
| 119 | 119 |
* Return the number of channels in the channel layout. |
| 120 | 120 |
*/ |
| 121 |
-int av_get_channel_layout_nb_channels(int64_t channel_layout); |
|
| 121 |
+int av_get_channel_layout_nb_channels(uint64_t channel_layout); |
|
| 122 | 122 |
|
| 123 | 123 |
/** |
| 124 | 124 |
* Return default channel layout for a given number of channels. |
| ... | ... |
@@ -154,7 +154,7 @@ |
| 154 | 154 |
|
| 155 | 155 |
#define LIBAVUTIL_VERSION_MAJOR 51 |
| 156 | 156 |
#define LIBAVUTIL_VERSION_MINOR 29 |
| 157 |
-#define LIBAVUTIL_VERSION_MICRO 0 |
|
| 157 |
+#define LIBAVUTIL_VERSION_MICRO 1 |
|
| 158 | 158 |
|
| 159 | 159 |
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ |
| 160 | 160 |
LIBAVUTIL_VERSION_MINOR, \ |
| ... | ... |
@@ -220,8 +220,8 @@ static av_always_inline av_const int av_popcount_c(uint32_t x) |
| 220 | 220 |
return (x + (x >> 16)) & 0x3F; |
| 221 | 221 |
} |
| 222 | 222 |
|
| 223 |
-#define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((d) << 24)) |
|
| 224 |
-#define MKBETAG(a,b,c,d) ((d) | ((c) << 8) | ((b) << 16) | ((a) << 24)) |
|
| 223 |
+#define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((unsigned)(d) << 24)) |
|
| 224 |
+#define MKBETAG(a,b,c,d) ((d) | ((c) << 8) | ((b) << 16) | ((unsigned)(a) << 24)) |
|
| 225 | 225 |
|
| 226 | 226 |
/** |
| 227 | 227 |
* 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 |
| 38 | 38 |
fate-aac-ap05_48: CMD = pcm -i $(SAMPLES)/aac/ap05_48.mp4 |
| 39 | 39 |
fate-aac-ap05_48: REF = $(SAMPLES)/aac/ap05_48.s16 |
| 40 | 40 |
|
| 41 |
+fate-aac-ct%: CMD = pcm -i $(SAMPLES)/aac/CT_DecoderCheck/$(@:fate-aac-ct-%=%) |
|
| 42 |
+fate-aac-ct%: REF = $(SAMPLES)/aac/CT_DecoderCheck/aacPlusv2.wav |
|
| 43 |
+ |
|
| 44 |
+FATE_AAC_CT = sbr_bc-ps_i.3gp \ |
|
| 45 |
+ sbr_bic-ps_i.3gp \ |
|
| 46 |
+ sbr_i-ps_i.aac \ |
|
| 47 |
+ sbr_bc-ps_bc.mp4 \ |
|
| 48 |
+ sbr_bc-ps_i.mp4 \ |
|
| 49 |
+ sbr_i-ps_bic.mp4 \ |
|
| 50 |
+ sbr_i-ps_i.mp4 |
|
| 51 |
+ |
|
| 52 |
+#FATE_AAC += $(FATE_AAC_CT:%=fate-aac-ct-%) |
|
| 53 |
+ |
|
| 41 | 54 |
FATE_TESTS += $(FATE_AAC) |
| 42 | 55 |
fate-aac: $(FATE_AAC) |
| 43 | 56 |
$(FATE_AAC): CMP = oneoff |