* qatar/master: x86: h264_idct: Rename x264_add8x4_idct_sse2 --> h264_add8x4_idct_sse2 rational: add av_inv_q() returning the inverse of an AVRational dpx: Make start offset unsigned lavfi: properly signal out-of-memory error in ff_filter_samples cosmetics: Fix a few switched periods and linebreaks zerocodec: Fix memleak in decode_frame zerocodec: Cosmetics Conflicts: ffmpeg.c Merged-by: Michael Niedermayer <michaelni@gmx.at>tags/n1.0
| @@ -1172,8 +1172,7 @@ static int configure_input_video_filter(FilterGraph *fg, InputFilter *ifilter, | |||||
| AVFilterContext *first_filter = in->filter_ctx; | AVFilterContext *first_filter = in->filter_ctx; | ||||
| AVFilter *filter = avfilter_get_by_name("buffer"); | AVFilter *filter = avfilter_get_by_name("buffer"); | ||||
| InputStream *ist = ifilter->ist; | InputStream *ist = ifilter->ist; | ||||
| AVRational tb = ist->framerate.num ? (AVRational){ist->framerate.den, | |||||
| ist->framerate.num} : | |||||
| AVRational tb = ist->framerate.num ? av_inv_q(ist->framerate) : | |||||
| ist->st->time_base; | ist->st->time_base; | ||||
| AVRational fr = ist->framerate.num ? ist->framerate : | AVRational fr = ist->framerate.num ? ist->framerate : | ||||
| ist->st->r_frame_rate; | ist->st->r_frame_rate; | ||||
| @@ -62,7 +62,8 @@ static int decode_frame(AVCodecContext *avctx, | |||||
| AVFrame *const p = &s->picture; | AVFrame *const p = &s->picture; | ||||
| uint8_t *ptr; | uint8_t *ptr; | ||||
| int magic_num, offset, endian; | |||||
| unsigned int offset; | |||||
| int magic_num, endian; | |||||
| int x, y; | int x, y; | ||||
| int w, h, stride, bits_per_color, descriptor, elements, target_packet_size, source_packet_size; | int w, h, stride, bits_per_color, descriptor, elements, target_packet_size, source_packet_size; | ||||
| @@ -704,7 +704,7 @@ h264_idct_dc_add8_mmx2: | |||||
| ALIGN 16 | ALIGN 16 | ||||
| INIT_XMM | INIT_XMM | ||||
| ; r0 = uint8_t *dst (clobbered), r2 = int16_t *block, r3 = int stride | ; r0 = uint8_t *dst (clobbered), r2 = int16_t *block, r3 = int stride | ||||
| x264_add8x4_idct_sse2: | |||||
| h264_add8x4_idct_sse2: | |||||
| movq m0, [r2+ 0] | movq m0, [r2+ 0] | ||||
| movq m1, [r2+ 8] | movq m1, [r2+ 8] | ||||
| movq m2, [r2+16] | movq m2, [r2+16] | ||||
| @@ -733,7 +733,7 @@ x264_add8x4_idct_sse2: | |||||
| %else | %else | ||||
| add r0, r0m | add r0, r0m | ||||
| %endif | %endif | ||||
| call x264_add8x4_idct_sse2 | |||||
| call h264_add8x4_idct_sse2 | |||||
| .cycle%1end | .cycle%1end | ||||
| %if %1 < 7 | %if %1 < 7 | ||||
| add r2, 64 | add r2, 64 | ||||
| @@ -768,7 +768,7 @@ cglobal h264_idct_add16_8_sse2, 5, 5 + ARCH_X86_64, 8 | |||||
| %else | %else | ||||
| add r0, r0m | add r0, r0m | ||||
| %endif | %endif | ||||
| call x264_add8x4_idct_sse2 | |||||
| call h264_add8x4_idct_sse2 | |||||
| jmp .cycle%1end | jmp .cycle%1end | ||||
| .try%1dc | .try%1dc | ||||
| movsx r0, word [r2 ] | movsx r0, word [r2 ] | ||||
| @@ -815,7 +815,7 @@ cglobal h264_idct_add16intra_8_sse2, 5, 7 + ARCH_X86_64, 8 | |||||
| mov r0, [r0] | mov r0, [r0] | ||||
| add r0, dword [r1+(%1&1)*8+64*(1+(%1>>1))] | add r0, dword [r1+(%1&1)*8+64*(1+(%1>>1))] | ||||
| %endif | %endif | ||||
| call x264_add8x4_idct_sse2 | |||||
| call h264_add8x4_idct_sse2 | |||||
| jmp .cycle%1end | jmp .cycle%1end | ||||
| .try%1dc | .try%1dc | ||||
| movsx r0, word [r2 ] | movsx r0, word [r2 ] | ||||
| @@ -178,6 +178,10 @@ int ff_filter_samples_framed(AVFilterLink *link, AVFilterBufferRef *samplesref) | |||||
| buf_out = ff_default_get_audio_buffer(link, dst->min_perms, | buf_out = ff_default_get_audio_buffer(link, dst->min_perms, | ||||
| samplesref->audio->nb_samples); | samplesref->audio->nb_samples); | ||||
| if (!buf_out) { | |||||
| avfilter_unref_buffer(samplesref); | |||||
| return AVERROR(ENOMEM); | |||||
| } | |||||
| buf_out->pts = samplesref->pts; | buf_out->pts = samplesref->pts; | ||||
| buf_out->audio->sample_rate = samplesref->audio->sample_rate; | buf_out->audio->sample_rate = samplesref->audio->sample_rate; | ||||
| @@ -114,6 +114,17 @@ AVRational av_add_q(AVRational b, AVRational c) av_const; | |||||
| */ | */ | ||||
| AVRational av_sub_q(AVRational b, AVRational c) av_const; | AVRational av_sub_q(AVRational b, AVRational c) av_const; | ||||
| /** | |||||
| * Invert a rational. | |||||
| * @param q value | |||||
| * @return 1 / q | |||||
| */ | |||||
| static av_always_inline AVRational av_inv_q(AVRational q) | |||||
| { | |||||
| AVRational r = { q.den, q.num }; | |||||
| return r; | |||||
| } | |||||
| /** | /** | ||||
| * Convert a double precision floating point number to a rational. | * Convert a double precision floating point number to a rational. | ||||
| * inf is expressed as {1,0} or {-1,0} depending on the sign. | * inf is expressed as {1,0} or {-1,0} depending on the sign. | ||||