Commit Graph

33923 Commits

Author SHA1 Message Date
Christophe Gisquet
4369b9dc7b x86: simple_idct(_put): 10bits versions
Modeled from the prores version. Clips to [0;1023] and is bitexact.
Bitexactness requires to add offsets in different places compared to
prores or C, and makes the function approximately 2% slower.

For 16 frames of a DNxHD 4:2:2 10bits test sequence:

C:    60861 decicycles in idct, 1048205 runs,    371 skips
sse2: 27567 decicycles in idct, 1048216 runs,    360 skips
avx:  26272 decicycles in idct, 1048171 runs,    405 skips

The add version is not implemented, so the corresponding dsp
function is set to NULL to make it clear in a code executing it.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-13 13:32:21 +02:00
Christophe Gisquet
e652f69b35 x86: simple_idct10_template: fix overflow in pass
When the input of a pass has 15 or 16 bits of precision (in particular
the column pass), the addition of a bias to W4 may lead to overflows
in the input to pmaddwd.

This requires postponing the adding of the bias to after the first
butterfly. To do so, the fact that m15, unused although zeroed, is
exploited. In case the pass is safe, an address can be directly used,
and the number of xmm regs can be decreased. Otherwise, the 32bits bias
is loaded into it.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-13 12:51:10 +02:00
Christophe Gisquet
2fd14dd8eb avcodec/simple_idct10: improve precision
omse goes from 0.03060703 (which fails for dct-test) to 0.01663750.
This also actually improve the error of decoding the sample generated
by fate-vsynth3-dnxhd1080i-10bit using simple_idct10 to FAANI, which
goes (when resampled to yuv422p) from:
stddev:    0.06 PSNR: 72.28 MAXDIFF:    1
to identical.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-13 02:10:51 +02:00
Christophe Gisquet
e9a68b0316 x86: prores: templatize 10 bits simple_idct
This should be reused for a generic simple_idct10 function.
Requires a bit of trickery to declare common constants in C.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-13 01:10:34 +02:00
Rostislav Pehlivanov
93e6b23c9f aacenc: shorten name of ff_aac_adjust_common_prediction
To keep it similar to the other functions which are all named *_pred.
2015-10-12 23:33:07 +01:00
Rostislav Pehlivanov
65f5b96dd8 aacenc: increase size of s->planar_samples[] from 6 to 8
Left out of last commit which added support for eight channel audio.
2015-10-12 23:25:45 +01:00
Christophe Gisquet
9f3bfe30dd mpegvideo: dnxhdenc: permute 10bits content
Dequant or encoding were trying to reverse a scan that hadn't been
applied...

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-13 00:01:39 +02:00
Michael Niedermayer
97437bd17a avcodec/mips/aaccoder_mips: Disable ff_aac_coder_init_mips() to prevent build failure
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-13 00:01:39 +02:00
Ricardo Constantino
53886d6955 avcodec/webvttdec: Deal with WebVTT escapes
Bare ampersand characters are still accepted, even though out-of-spec.
Also fixes adjacent tags not being parsed.

Fixes trac #4915

Signed-off-by: Ricardo Constantino <wiiaboo@gmail.com>
2015-10-12 22:04:05 +02:00
Derek Buitenhuis
1156b634c1 avcodec: Don't lock on init for codecs without an init function
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2015-10-12 15:25:51 -03:00
Rostislav Pehlivanov
e2749ef60a aacenc_utils: fit find_form_factor() below 80 chars per line 2015-10-12 17:14:50 +01:00
Rostislav Pehlivanov
0f4334df45 aacenc: add support for changing options based on a profile
This commit adds the ability for a profile to set the default
options, as well as for the user to override such options
by simply stating them in the command line while still keeping
the same profile, as long as those options are still permitted by
the profile.

Example: setting the profile to aac_low (the default) will turn
PNS and IS on. They can be disabled by -aac_pns 0 and -aac_is 0,
respectively. Turning on -aac_pred 1 will cause the profile to be
elevated to aac_main, as long as no options forbidding aac_main
have been entered (like AAC-LTP, which will be pushed soon).

A useful feature is that by setting the profile to mpeg2_aac_low,
all MPEG4 features will be disabled and if the user tries to enable
them then the program will exit with an error. This profile is
signalled with the same bitstream as aac_low (MPEG4) but some devices
and decoders will fail if any MPEG4 features have been enabled.
2015-10-12 16:57:56 +01:00
Rostislav Pehlivanov
b3deaece87 aacenc: add support for encoding 7.1 channel audio
This commit implements support for 7.1 channel audio. There's no
more predefined bitstream channel mappings so going beyond 8 channels
(and 7 channels exactly) will require programmable channel elements,
which is already underway.
2015-10-12 15:53:17 +01:00
Rostislav Pehlivanov
e679a1e65f aacenc_quantization: fix header description
Two guesses as to which file was used as boilerplate.
2015-10-12 15:41:50 +01:00
Claudio Freire
b629c67ddf AAC encoder: memoize quantize_band_cost
The bulk of calls to quantize_band_cost are replaced
by a call to a version that memoizes, greatly improving
performance, since during coefficient search there is
a great deal of repeat work.

Memoization cannot always be applied, so do this in a
different function, and leave the original as-is.
2015-10-12 03:56:22 -03:00
Claudio Freire
07b3b779a9 AAC encoder: fix assertion error re SF differences
Intermediate results can indeed violate SF delta. Instead of asserting
there, just make the code safe, and assert on the final result.

Also re-clamp SFs more often in short windows (which tend to violate
the restriction when encoding the switch from one window to the other)
2015-10-11 23:00:46 -03:00
Rostislav Pehlivanov
d25c033ddd aaccoder_twoloop.h: simplify and comment ff_pns_bits() 2015-10-12 01:42:43 +01:00
Rostislav Pehlivanov
5f760da6b6 aacenc_utils: add 'inline' flag to find_form_factor, silence warning
Seems it was forgotten.
2015-10-12 01:12:43 +01:00
Andreas Cadhalpun
ec0275843d avcodec: remove leftover iff_byterun1 decoder
It was merged with the iff_ilbm decoder in commit
929a24efff.

Define AV_CODEC_ID_IFF_BYTERUN1 as AV_CODEC_ID_IFF_ILBM for API
compatibility.

Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com>
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
2015-10-12 00:21:13 +02:00
Ronald S. Bultje
93866c2aa2 intmath: remove av_ctz.
It's a non-installed header and only used in one place (flacenc).
Since ff_ctz is static inline, it's fine to use that instead.
2015-10-11 18:03:10 -04:00
Claudio Freire
323d37521d AAC encoder: cosmetics from last commit
Reindent
2015-10-11 18:06:02 -03:00
Claudio Freire
01ecb7172b AAC encoder: Extensive improvements
This finalizes merging of the work in the patches in ticket #2686.

Improvements to twoloop and RC logic are extensive.

The non-exhaustive list of twoloop improvments includes:
 - Tweaks to distortion limits on the RD optimization phase of twoloop
 - Deeper search in twoloop
 - PNS information marking to let twoloop decide when to use it
   (turned out having the decision made separately wasn't working)
 - Tonal band detection and priorization
 - Better band energy conservation rules
 - Strict hole avoidance

For rate control:
 - Use psymodel's bit allocation to allow proper use of the bit
   reservoir. Don't work against the bit reservoir by moving lambda
   in the opposite direction when psymodel decides to allocate more/less
   bits to a frame.
 - Retry the encode if the effective rate lies outside a reasonable
   margin of psymodel's allocation or the selected ABR.
 - Log average lambda at the end. Useful info for everyone, but especially
   for tuning of the various encoder constants that relate to lambda
   feedback.

Psy:
 - Do not apply lowpass with a FIR filter, instead just let the coder
   zero bands above the cutoff. The FIR filter induces group delay,
   and while zeroing bands causes ripple, it's lost in the quantization
   noise.
 - Experimental VBR bit allocation code
 - Tweak automatic lowpass filter threshold to maximize audio bandwidth
   at all bitrates while still providing acceptable, stable quality.

I/S:
 - Phase decision fixes. Unrelated to #2686, but the bugs only surfaced
   when the merge was finalized. Measure I/S band energy accounting for
   phase, and prevent I/S and M/S from being applied both.

PNS:
 - Avoid marking short bands with PNS when they're part of a window
   group in which there's a large variation of energy from one window
   to the next. PNS can't preserve those and the effect is extremely
   noticeable.

M/S:
 - Implement BMLD protection similar to the specified in
   ISO-IEC/13818:7-2003, Appendix C Section 6.1. Since M/S decision
   doesn't conform to section 6.1, a different method had to be
   implemented, but should provide equivalent protection.
 - Move the decision logic closer to the method specified in
   ISO-IEC/13818:7-2003, Appendix C Section 6.1. Specifically,
   make sure M/S needs less bits than dual stereo.
 - Don't apply M/S in bands that are using I/S

Now, this of course needed adjustments in the compare targets and
fuzz factors of the AAC encoder's fate tests, but if wondering why
the targets go up (more distortion), consider the previous coder
was using too many bits on LF content (far more than required by
psy), and thus those signals will now be more distorted, not less.

The extra distortion isn't audible though, I carried extensive
ABX testing to make sure.

A very similar patch was also extensively tested by Kamendo2 in
the context of #2686.
2015-10-11 17:29:50 -03:00
Paul B Mahol
f226c25a37 avcodec/sipr: use AVERROR return code instead of -1
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-10-11 18:40:28 +02:00
Michael Niedermayer
98b8bf12bc avcodec/pngdec: Use av_malloc_array()
Suggested-by: ubitux
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-11 16:39:41 +02:00
Michael Niedermayer
c08b06c225 avcodec/jpeg2000dec: Check that step_x/y are valid before use in JPEG2000_PGOD_PCRL
Fixes: CID1322305 and CID1322304

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-11 15:43:26 +02:00
Michael Niedermayer
47c5a3058e avcodec/pngdec: Alloc buffer after blend_op check in handle_p_frame_apng()
Avoids memleak on error
Fixes CID1322342

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-11 13:09:56 +02:00
Michael Niedermayer
1e7e4f13f9 avcodec/pngdec: Check blend_op.
Fixes CID1322359, CID1322358

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-11 03:46:44 +02:00
Rodger Combs
0d53a6f5b4 lavc: move bitstream filter args to the bsf ctx 2015-10-10 10:41:10 -05:00
Luca Barbato
00332e0a06 wrapped_avframe: Initial implementation 2015-10-10 14:50:34 +02:00
Ganesh Ajjanagadde
979572365f avcodec/ac3enc: fix undefined negative left shift
This should fix the undefined behavior reported in:
https://trac.ffmpeg.org/ticket/4727.

I can reproduce this at runtime: simply stick in an abort call in
asym_quant to check if c < 0 and run FATE. I don't know ac3 so I can't
confirm if negative coefficients are intentional, but at the moment they
clearly are according to FATE.

This resolves the undefined behavior. Tested with FATE.

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-10 14:43:22 +02:00
Hendrik Leppkes
c4e23ca853 Merge commit 'c3e5c47bdae2bb8219fea62d91b7455650b22c60'
* commit 'c3e5c47bdae2bb8219fea62d91b7455650b22c60':
  libopenh264enc: Added max_nal_size option

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-10 09:58:42 +02:00
Anton Khirnov
8a73b8c5b4 cabac: Make cabac starts hardcoded
There's not much reason to generate such a small table at runtime.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2015-10-10 09:52:18 +02:00
Derek Buitenhuis
9692fd7622 Revert "cabac: Allow hardcoding CABAC table."
This becomes unuseful in the following commit.

This reverts commit 092d1977cc.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2015-10-10 09:52:13 +02:00
Hendrik Leppkes
a71fff213d Merge commit '58b42345b38b46d11c32e11d9c57517f99d6a601'
* commit '58b42345b38b46d11c32e11d9c57517f99d6a601':
  dcadec: reorganise context data

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-10 09:32:59 +02:00
Hendrik Leppkes
d3952510d2 Merge commit '3a4d369ea4ded91b1178ae6e2ff0ab9ea470e344'
* commit '3a4d369ea4ded91b1178ae6e2ff0ab9ea470e344':
  g2m: Relax resolution change constraints

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-10 09:13:32 +02:00
James Almer
dab5f65b25 x86/takdsp: use arithmetic shift instructions
p1 and p2 are int32_t.

Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2015-10-09 23:52:39 -03:00
赵宇龙
cd847839f3 h264_mp4toannexb: fix the pps offset when there are more than one sps in avcc
the pps offset is used to locate pps in the spspps_buf; however, the
current calc method is wrong because it is the offset of the original
avctx->extradata;
when there is only one sps in the avcc; the value is correct by
coincidence, however, it will fail in avcc with multi sps

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-10 01:37:00 +02:00
Michael Niedermayer
3d126ef188 avcodec/h264_mp4toannexb_bsf: Use av_freep() to free spspps_buf
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-10 01:29:22 +02:00
Ganesh Ajjanagadde
9953038728 avcodec/xvmc: apply attribute_deprecated correctly
This fixes a warning observed on Clang 3.7:
"warning: attribute 'deprecated' is ignored, place it after "struct" to apply attribute to type declaration [-Wignored-attributes]"
and thus enables deprecation warning for the relevant struct.

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2015-10-09 19:01:08 -04:00
Ganesh Ajjanagadde
3be27e07d3 avcodec/mpegvideoenc: fix undefined negative left shift
This should fix the first undefined behavior reported in:
https://trac.ffmpeg.org/ticket/4727.

I can't reproduce the runtime behavior reported in the ticket, hence I
can't confirm that this actually fixes the exact issue reported in the
ticket.

Regardless, I can confirm that this is a genuine issue, and that
negative shifts can (and do) occur, fixed by this.

Tested with FATE.

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-09 23:01:55 +02:00
Andreas Cadhalpun
8d6625642d doc: fix spelling errors
Reviewed-by: Lou Logan <lou@lrcd.com>
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
2015-10-09 22:09:08 +02:00
Paul B Mahol
35af7add6f avcodec/takdec: add x86 SIMD for rest of decorrelation modes
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2015-10-09 21:38:15 +02:00
Carl Eugen Hoyos
d6cfbcd621 lavc/mjpegenc: Add an option to force outputting chroma matrix.
RFC 2435 suggests that mjpeg over rtp uses both two tables.
2015-10-09 20:58:07 +02:00
Mario Gasparoni
c3e5c47bda libopenh264enc: Added max_nal_size option
Also added dynamic slice_mode option, needed for the max_nal_size.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-10-09 16:53:44 +02:00
Ganesh Ajjanagadde
1e81fd3710 avcodec/pthread_frame: update doxygen for update_context_from_thread
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2015-10-09 09:56:08 -04:00
wm4
b3f8d871ee avcodec/ass: fix doxygen typo 2015-10-08 23:29:18 +02:00
Anton Khirnov
a8956eca1f cabac: Make CABAC states hardcoded
There is not much reason to generate such a small table at runtime.

Signed-off-by: Derek Buitenhuis <derekb@vimeo.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-10-08 21:55:31 +02:00
Christophe Gisquet
5911eeb033 dnxhdenc: mark CID 1260 encoder experimental
The MBAFF handling recently introduced on the decoder side shows that
the encoder does not support it correctly. Therefore, make the related
profile experimental.

Furthermore, current encoder logic treats it as unable to encode as
progressive, which isn't the case.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-08 00:22:06 +02:00
Christophe Gisquet
79cfb36f92 dnxhddata: introduce and use MBAFF flag
MBAFF-like handling of interlaced content in CID 1260 is different from
the other CIDs, and in particular doesn't use the same syntax.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-07 23:33:44 +02:00
Christophe Gisquet
71199ee907 dnxhddec: better support for 4:4:4
Profiles 1256 & 1270 (currently) signal at the frame header and MB
levels the colorspace used, either RGB or YUV. While a MB-level
varying colorspace is not supported, whether it is constant can be
tracked so as to determine the exact colorspace.

This requires having bitdepth and the ACT and 4:4:4 flags, in turn
needing the CID. Because setting those before having validated
enough things may result in invalid/unset DSP fucntions, setting
the bitdepth in the context is delayed.

It is not tested against a true RGB sequence, though.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-07 23:16:52 +02:00
Alexandra Khirnova
58b42345b3 dcadec: reorganise context data
place primary audio coding header data into DCAAudioHeader
structure to make DCAContext clearer
and move channel related data to DCAChan structure to make
them easier to use by extensions

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-10-07 18:45:49 +02:00
Vittorio Giovara
3a4d369ea4 g2m: Relax resolution change constraints
Do not fail when original resolution is smaller than current one,
as the frame buffer is resized automatically.

Signed-off-by: Vittorio Giovara <vittorio.giovara at gmail.com>
2015-10-07 18:45:49 +02:00
Shivraj Patil
322e960dbf avcodec/mips: build fix for MSA 64bit
Modified datatype of function argument (pitch from int32_t to ptrdiff_t)

Signed-off-by: Shivraj Patil <shivraj.patil@imgtec.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-07 16:40:05 +02:00
Shivraj Patil
b0732b0214 avcodec/mips: build fix for MSA
Modified sps and pps access from old HEVCContext(s) structure to newly introduced HEVCParamSets(ps)

Signed-off-by: Shivraj Patil <shivraj.patil@imgtec.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-07 16:40:05 +02:00
Arttu Ylä-Outinen
cb8999f368 doc/encoders: Fix libkvazaar documentation
The -threads option is ignored with libkvazaar since it does not have
any of the AV_CODEC_CAP_{FRAME,SLICE,AUTO}_THREADS capabilities. This
commit removes the incorrect documentation as well as the no-op of
setting the number of threads in libkvazaar encoder.

Signed-off-by: Arttu Ylä-Outinen <arttu.yla-outinen@tut.fi>
2015-10-07 17:09:13 +03:00
Arttu Ylä-Outinen
0e34868387 libkvazaar: Fix setting framerate
The divisor and dividend in the equation had been swapped, making the
result the inverse of the actual framerate.

Signed-off-by: Arttu Ylä-Outinen <arttu.yla-outinen@tut.fi>
2015-10-07 17:09:10 +03:00
Arttu Ylä-Outinen
5fefa7b512 libkvazaar: Use av_image_copy for copying pixels
Replaces a for loop for copying pixels by a call to av_image_copy.

Signed-off-by: Arttu Ylä-Outinen <arttu.yla-outinen@tut.fi>
2015-10-07 17:09:08 +03:00
Arttu Ylä-Outinen
8db62f0419 libkvazaar: Set pts and dts
Signed-off-by: Arttu Ylä-Outinen <arttu.yla-outinen@tut.fi>
2015-10-07 17:09:05 +03:00
Arttu Ylä-Outinen
c09419ca80 libkvazaar: Replace asserts with proper errors
Changes function libkvazaar_encode to return proper error codes instead
of crashing when the video dimensions or pixel format change in the
middle of encoding.

Signed-off-by: Arttu Ylä-Outinen <arttu.yla-outinen@tut.fi>
2015-10-07 17:09:02 +03:00
Arttu Ylä-Outinen
425d6134ed libkvazaar: Remove unnecessary NULL checks
Signed-off-by: Arttu Ylä-Outinen <arttu.yla-outinen@tut.fi>
2015-10-07 17:09:00 +03:00
Arttu Ylä-Outinen
b3777b2c2e libkvazaar: Update to work with the latest version
Function encoder_encode in Kvazaar API was changed to have new output
parameters: source picture and frame info. Frame info is used to set the
keyframe flag and source picture is ignored.

Signed-off-by: Arttu Ylä-Outinen <arttu.yla-outinen@tut.fi>
2015-10-07 16:43:34 +03:00
Ronald S. Bultje
ce78729033 vp9: don't keep a stack pointer if we don't need it.
This saves one register in a few cases on 32bit builds with unaligned
stack (e.g. MSVC), making the code slightly easier to maintain.

(Can someone please test this on 32bit+msvc and confirm make fate-vp9
and tests/checkasm/checkasm still work after this patch?)
2015-10-07 08:55:19 -04:00
Ganesh Ajjanagadde
b3b6665c60 avcodec/libx264: silence -Waddress
This patch moves the pointer validity check outside the macro,
and silences the -Waddress observed with GCC 5.2.

Note that this changes the error message slightly, from:
"bad option..." to "Error parsing option...".

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
2015-10-07 08:55:18 -04:00
Michael Niedermayer
a852db796e avcodec/pngenc: Check that there is at least 1 frame
Fixes null pointer dereference
Fixes CID1322330

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-07 04:50:16 +02:00
Michael Niedermayer
e96ecaf053 avcodec/pngenc: Initialize fctl_chunk to 0
The structure is copied around and that triggers warnings if it is uninitialized
Fixes CID1322360

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-07 02:49:34 +02:00
James Almer
72254b19b8 x86/alacdsp: add simd optimized functions
Signed-off-by: James Almer <jamrial@gmail.com>
2015-10-06 20:22:00 -03:00
Ronald S. Bultje
cb912b4521 vp9: fix msvc build by using 6 GPRs on 32bit if stack!=aligned. 2015-10-05 16:51:05 -04:00
Jeremy James
6f1ccca4ae dnxhd: add better support for CIDs 1270 to 1274
These are DNxHR profiles with the following properties:
- Variable size in a profile (property added in a previous commit),
  requiring variable-sized macroblock table;
- Variable bitdepth, up to 12 bits.
- Better validation of buffer sizes and positions

Signed-off-by: Christophe Gisquet <christophe.gisquet@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-05 13:08:20 +02:00
Christophe Gisquet
66db504f03 dnxhd: add CID 1270
This a 4:4:4 10 bits profile, where image size is not fixed by the
profile, and which strays a bit outside the old frame header parsing
code.

Fixes ticket #4581 (DNxHR is not stricly supported, but that sequence is).

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-05 12:58:40 +02:00
Jeremy James
118a3cd2c5 dnxhd: add decoder support for DNxHR
Signed-off-by: Christophe Gisquet <christophe.gisquet@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-05 12:44:10 +02:00
Christophe Gisquet
1f4ff53aea dnxhddec: Introduce DNXHD_VARIABLE
Currently not used, but will be used to indicate that a CIDEntry field
is not set, because it is variable, and that checks should be adapted.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-05 12:44:00 +02:00
Christophe Gisquet
52256860d6 dnxhdenc: do not select 4:4:4 profiles
The encoder can only deal with 4:2:2.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-05 12:27:15 +02:00
Christophe Gisquet
4e7cba1d8a dnxhd: profile flags
Move the 'interlaced' flag to this element (arbitrarily set to 16bits).
This should allow better detection/selection of profiles.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-05 12:26:54 +02:00
Christophe Gisquet
9139a7e84f dnxhddec: cleanup frame header parsing
Rely more on the actual syntax from the specs (also seen in the
encoder code).

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-05 12:26:30 +02:00
Michael Niedermayer
c0152ebb9e avcodec/mmaldec: Use av_assert0() instead of assert()
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-05 12:04:40 +02:00
Hendrik Leppkes
329a0e419e Merge commit '39f01e346cab464ef6c0d4ec58cc13b7123e60d8'
* commit '39f01e346cab464ef6c0d4ec58cc13b7123e60d8':
  mmaldec: be more tolerant against MMAL not returning decoded output

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-05 11:34:11 +02:00
Hendrik Leppkes
827d4b7942 Merge commit '65db4899fa8790049bec3af16ecdb75dd81051fd'
* commit '65db4899fa8790049bec3af16ecdb75dd81051fd':
  mmaldec: refactor to have more context per MMAL input buffer

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-05 11:34:04 +02:00
Hendrik Leppkes
cae02106b7 Merge commit 'abe9adfb31566c415fd830a8d4977c79512d4385'
* commit 'abe9adfb31566c415fd830a8d4977c79512d4385':
  rangecoder: Use AV_RB16 instead of bytestream_get_be16

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-05 11:30:53 +02:00
Hendrik Leppkes
78d9658a4d Merge commit '4628443ca3534060888dd0015b229337eac13fd2'
* commit '4628443ca3534060888dd0015b229337eac13fd2':
  h263: Drop uninitialized variable use from log message

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-05 11:27:07 +02:00
Hendrik Leppkes
fbd71bba85 Merge commit '1da2a20763ae9ca579d5fd20763065871ddf6311'
* commit '1da2a20763ae9ca579d5fd20763065871ddf6311':
  dvbsubdec: Fix function return type

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-05 11:25:40 +02:00
Hendrik Leppkes
d0186a4ec4 Merge commit 'cab63a8b594cdc365bb2581a12b3ac8e6dd480b2'
* commit 'cab63a8b594cdc365bb2581a12b3ac8e6dd480b2':
  dv: Mark internal frame reference as const

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-05 11:21:23 +02:00
Hendrik Leppkes
0cd8170dd2 Merge commit 'bb198c4997d5036f3bf91de51e44f807115677d0'
* commit 'bb198c4997d5036f3bf91de51e44f807115677d0':
  d3d11va: make av_d3d11va_alloc_context() available at all times

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-05 11:18:31 +02:00
Hendrik Leppkes
ac830e9b48 Merge commit 'f3202871598f59b570b31b01cfeb64b8fedbd700'
* commit 'f3202871598f59b570b31b01cfeb64b8fedbd700':
  d3d11va: check for malloc failure

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-10-05 11:18:08 +02:00
Michael Niedermayer
46f3015f35 avcodec/tta: Un-break build without threads
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-04 23:07:44 +02:00
wm4
39f01e346c mmaldec: be more tolerant against MMAL not returning decoded output
In some situations, MMAL won't return a decoded frame for certain input
frames. This can happen if a frame fails to decode, or if a packet does
not actually contain a complete frame. In these situations, we would
deadlock (or actually timeout) waiting for an expected output frame,
which is not ideal. On the other hand, there are situations where we
definitely have to block to avoid deadlocks. (This mess is a
consequence of trying to map MMAL's asynchronous and flexible
dataflow to libavcodec, which is more static and rigid.)

Solve this by doing a blocking wait only if the amount of buffered data
is too big. The whole purpose of the blocking wait is to avoid excessive
buffering of input data, so we can skip it if it appears to be low. The
consequence is that libavcodec can gracefully return no frame to the
API user.

We want to track the number of full packets to make our heuristic work.
But MMAL buffers are fixed-size, requiring splitting large packets. This
is why the previous commit is needed. We use the ..._FRAME_END flag to
remember packet boundaries, but MMAL does not preserve these buffer
flags when returning buffers to the user.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-10-04 19:34:04 +02:00
wm4
65db4899fa mmaldec: refactor to have more context per MMAL input buffer
The next commit needs 1 bit of additional information per MMAL buffer
sent to the MMAL input port. This information will be needed when the
buffer is recycled (i.e. returned by the input port's callback).
Normally, we could use MMAL_BUFFER_HEADER_FLAG_USER0, but that is
unexpectedly not preserved.

Do this by storing a pointer to FFBufferEntry in the MMAL buffer's
user data, instead of an AVBufferRef. This also changes the lifetime
of FFBufferEntry.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-10-04 19:34:04 +02:00
James Almer
b70566d6ca avcodec/alacdec: split off decorrelate_stereo and append_extra_bits as alacdsp
Reviewed-by: Michael Niedermayer <michaelni@gmx.at>
Signed-off-by: James Almer <jamrial@gmail.com>
2015-10-04 14:10:05 -03:00
Ganesh Ajjanagadde
2cbaa078d1 avcodec: use HAVE_THREADS header guards to silence -Wunused-function
When compiled with --disable-pthreads, e.g
http://fate.ffmpeg.org/report.cgi?time=20150917015044&slot=alpha-debian-qemu-gcc-4.7,
a bunch of -Wunused-functions are reported due to missing header guards
around threading related functions.
This patch should silence such warnings.

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
2015-10-04 12:47:34 -04:00
Derek Buitenhuis
eae58428bd avcodec: Do not lock during open for codecs marked as having threadsafe init
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2015-10-04 13:21:16 +02:00
Vittorio Giovara
abe9adfb31 rangecoder: Use AV_RB16 instead of bytestream_get_be16
Silence an incompatible-pointer-types-discards-qualifiers warning from clang.
rangecoder.c:58:34: warning: passing
      'uint8_t **' (aka 'unsigned char **') to parameter of type
      'const uint8_t **' (aka 'const unsigned char **') discards qualifiers in
      nested pointer types [-Wincompatible-pointer-types-discards-qualifiers]
2015-10-04 13:09:08 +02:00
Vittorio Giovara
b8b13acd70 hevc: Simplify logical check
The intended meaning is "if this block is the first block in a slice then
its left boundary is a slice boundary". Silence a logical-not-parentheses
warning from gcc.
2015-10-04 13:08:58 +02:00
Vittorio Giovara
4628443ca3 h263: Drop uninitialized variable use from log message 2015-10-04 13:07:12 +02:00
Vittorio Giovara
1da2a20763 dvbsubdec: Fix function return type 2015-10-04 13:07:12 +02:00
Vittorio Giovara
10aa6f9db4 h264: Use the correct argument context in debug log 2015-10-04 13:07:12 +02:00
Vittorio Giovara
cab63a8b59 dv: Mark internal frame reference as const
Silence a warning due to frame assignment in dvenc. All uses of the
reference in dvdec are read only, except the ones in the main decoding
function, so use the frame pointer directly there.
2015-10-04 13:06:34 +02:00
Vittorio Giovara
4c160fa239 dcadec: Always initialize return variable
Silence an uninitialized warning from clang.
2015-10-04 13:06:27 +02:00
DeHackEd
e06114fed3 libx264: copy A53 closed captions from source
Assumes 'GA94' format (ATSC standard)

Signed-off-by: DHE <git@dehacked.net>
Tested-by: Anshul <anshul.ffmpeg@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-03 23:39:01 +02:00
Christophe Gisquet
f827a17005 blockdsp: reindent after parameter removal
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-03 23:34:56 +02:00
Ganesh Ajjanagadde
c4c389aa14 avcodec/apedec: fix bug introduced in commit d3e5fbb140
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-03 23:04:23 +02:00
Ronald S. Bultje
061b67fb50 vp9: 10/12bpp SIMD (sse2/ssse3/avx) for directional intra prediction. 2015-10-03 14:42:39 -04:00