Commit Graph

144 Commits

Author SHA1 Message Date
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
Christophe Gisquet
74ef5449a6 dnxhddec: init scantable once permutation is set
Otherwise, the dsp may change without its permuation being applied.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-02 18:08:36 +02:00
Christophe Gisquet
c7e14a279f dnxhddec: use dequantization formula from specs
The current one, while correct, does not yield the best possible
results. The specificiations suggest another formula, which results
in quality gains in the decoded output from fate tests. This
justifies changing said formula.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-02 18:08:36 +02:00
Christophe Gisquet
7e4070d2e7 dnxhddec: initialize with mb-aligned dimensions
The coded size is a multiple of the macroblock size, which is 16.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-10-02 18:08:36 +02:00
Hendrik Leppkes
1342d7b2f9 Merge commit 'c49cbecbae5a42f4ca004197b0118cc50aaaca2e'
* commit 'c49cbecbae5a42f4ca004197b0118cc50aaaca2e':
  dnxhddec: Decode and use interlace mb flag

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-09-29 15:36:06 +02:00
Christophe Gisquet
c49cbecbae dnxhddec: Decode and use interlace mb flag
This bit is 1 in some samples, and seems to coincide with interlaced
mbs and CID1260. 2008 specs do not know about it, and maintain qscale
is 11 bits. This looks oversized, but may help larger bitdepths.

Currently, it leads to an obviously incorrect qscale value, meaning
its syntax is shifted by 1. However, reading 11 bits also leads to
obviously incorrect decoding: qscale seems to be 10 bits.

However, as most profiles still have 11bits qscale, the feature is
restricted to the CID1260 profile (this flag is dependent on
a higher-level flag located in the header).

The encoder writes 12 bits of syntax, last and first bits always 0,
which is now somewhat inconsistent with the decoder, but ends up with
the same effect (progressive + reserved bit).

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-09-29 14:33:01 +02:00
Christophe Gisquet
578f721f5d dnxhddec: add my contributions
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-28 12:39:22 +02:00
Christophe Gisquet
6110a55b7d dnxhddec: reindent/cosmetics
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-28 12:25:56 +02:00
Christophe Gisquet
235381e674 dnxhddec: use unsafe bitstream reader
Each line is padded by the format, and errors are now reported and
stop the decoding. Around 5% speedup.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-28 01:00:58 +02:00
Christophe Gisquet
b8b8e82ea1 dnxhddec: check and report bitstream errors
This only occur when an overrun in coefficient decoding is
detected.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-27 21:57:58 +02:00
Christophe Gisquet
5c6e3a019c dnxhddec: simplify block parsing calls
Fewer arguments, less duplicated code.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-27 12:03:00 +02:00
Christophe Gisquet
8e8ed57ea7 dnxhddec: remove unused qscale parameter
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-27 12:03:00 +02:00
Christophe Gisquet
08a7510fca dnxhddec: implement slice multithreading
Around 3x speedup with 4 threads. Maybe more mb lines should be
batched per thread, but that's good enough for a first try.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-27 01:07:46 +02:00
Christophe Gisquet
dc218bd083 dnxhddec: parse and print adaptive color transform
Indicates a YCbCr->RGB transform at the block level. Although nothing
explicitly states it, this would assume the actual content is planar
RGB.

Currently unsupported, but the one sequence I found using it flagged
every mb that way, actually meaning the content was YCbCr, and thus
best left to the output format to decide what to do of it.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-26 17:35:04 +02:00
Christophe Gisquet
e4b7c3a9f2 dnxhddec: proper rule for interlaced mb flag
It currently only applies to CID 1260, but this flag is dependent on
a higher-level flag located in the header.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-26 16:34:27 +02:00
Christophe Gisquet
e19ea0218a dnxhddec: indicate colorspace
It is supposed to only old BT.709 colorspaces.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-26 01:07:40 +02:00
Christophe Gisquet
2801a1352d dnxhddec: decode and use interlace mb flag
This bit is 1 in some samples, and seems to coincide with interlaced
mbs and CID1260. 2008 specs do not know about it, and maintain qscale
is 11 bits. This looks oversized, but may help larger bitdepths.

Currently, it leads to an obviously incorrect qscale value, meaning
its syntax is shifted by 1. However, reading 11 bits also leads to
obviously incorrect decoding: qscale seems to be 10 bits.

However, as most profiles still have 11bits qscale, the feature is
restricted to the CID1260 profile.

The encoder writes 12 bits of syntax, last and first bits always 0,
which is now somewhat inconsistent with the decoder, but ends up with
the same effect (progressive + reserved bit).

Partially fixes ticket #4876.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-25 20:41:19 +02:00
Michael Niedermayer
444e9874a7 Merge commit 'def97856de6021965db86c25a732d78689bd6bb0'
* commit 'def97856de6021965db86c25a732d78689bd6bb0':
  lavc: AV-prefix all codec capabilities

Conflicts:
	cmdutils.c
	ffmpeg.c
	ffplay.c
	libavcodec/8svx.c
	libavcodec/aacenc.c
	libavcodec/ac3dec.c
	libavcodec/adpcm.c
	libavcodec/alac.c
	libavcodec/atrac3plusdec.c
	libavcodec/bink.c
	libavcodec/dnxhddec.c
	libavcodec/dvdec.c
	libavcodec/dvenc.c
	libavcodec/ffv1dec.c
	libavcodec/ffv1enc.c
	libavcodec/fic.c
	libavcodec/flacdec.c
	libavcodec/flacenc.c
	libavcodec/flvdec.c
	libavcodec/fraps.c
	libavcodec/frwu.c
	libavcodec/gifdec.c
	libavcodec/h261dec.c
	libavcodec/hevc.c
	libavcodec/iff.c
	libavcodec/imc.c
	libavcodec/libopenjpegdec.c
	libavcodec/libvo-aacenc.c
	libavcodec/libvorbisenc.c
	libavcodec/libvpxdec.c
	libavcodec/libvpxenc.c
	libavcodec/libx264.c
	libavcodec/mjpegbdec.c
	libavcodec/mjpegdec.c
	libavcodec/mpegaudiodec_float.c
	libavcodec/msmpeg4dec.c
	libavcodec/mxpegdec.c
	libavcodec/nvenc_h264.c
	libavcodec/nvenc_hevc.c
	libavcodec/pngdec.c
	libavcodec/qpeg.c
	libavcodec/ra288.c
	libavcodec/rv10.c
	libavcodec/s302m.c
	libavcodec/sp5xdec.c
	libavcodec/takdec.c
	libavcodec/tiff.c
	libavcodec/tta.c
	libavcodec/utils.c
	libavcodec/v210dec.c
	libavcodec/vp6.c
	libavcodec/vp9.c
	libavcodec/wavpack.c
	libavcodec/yop.c

Merged-by: Michael Niedermayer <michael@niedermayer.cc>
2015-07-27 22:50:18 +02:00
Michael Niedermayer
94d68a41fa Merge commit '7c6eb0a1b7bf1aac7f033a7ec6d8cacc3b5c2615'
* commit '7c6eb0a1b7bf1aac7f033a7ec6d8cacc3b5c2615':
  lavc: AV-prefix all codec flags

Conflicts:
	doc/examples/muxing.c
	ffmpeg.c
	ffmpeg_opt.c
	ffplay.c
	libavcodec/aacdec.c
	libavcodec/aacenc.c
	libavcodec/ac3dec.c
	libavcodec/ac3enc_float.c
	libavcodec/atrac1.c
	libavcodec/atrac3.c
	libavcodec/atrac3plusdec.c
	libavcodec/dcadec.c
	libavcodec/ffv1enc.c
	libavcodec/h264.c
	libavcodec/h264_loopfilter.c
	libavcodec/h264_mb.c
	libavcodec/imc.c
	libavcodec/libmp3lame.c
	libavcodec/libtheoraenc.c
	libavcodec/libtwolame.c
	libavcodec/libvpxenc.c
	libavcodec/libxavs.c
	libavcodec/libxvid.c
	libavcodec/mpeg12dec.c
	libavcodec/mpeg12enc.c
	libavcodec/mpegaudiodec_template.c
	libavcodec/mpegvideo.c
	libavcodec/mpegvideo_enc.c
	libavcodec/mpegvideo_motion.c
	libavcodec/nellymoserdec.c
	libavcodec/nellymoserenc.c
	libavcodec/nvenc.c
	libavcodec/on2avc.c
	libavcodec/options_table.h
	libavcodec/opus_celt.c
	libavcodec/pngenc.c
	libavcodec/ra288.c
	libavcodec/ratecontrol.c
	libavcodec/twinvq.c
	libavcodec/vc1_block.c
	libavcodec/vc1_loopfilter.c
	libavcodec/vc1_mc.c
	libavcodec/vc1dec.c
	libavcodec/vorbisdec.c
	libavcodec/vp3.c
	libavcodec/wma.c
	libavcodec/wmaprodec.c
	libavcodec/x86/hpeldsp_init.c
	libavcodec/x86/me_cmp_init.c

Merged-by: Michael Niedermayer <michael@niedermayer.cc>
2015-07-27 22:10:35 +02:00
Vittorio Giovara
def97856de lavc: AV-prefix all codec capabilities
Express bitfields more simply.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-07-27 15:24:58 +01:00
Vittorio Giovara
7c6eb0a1b7 lavc: AV-prefix all codec flags
Convert doxygen to multiline and express bitfields more simply.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-07-27 15:24:58 +01:00
Michael Niedermayer
53d2b69b72 Merge commit 'd84429d41e24437536907af1e6b73197ecf3f6db'
* commit 'd84429d41e24437536907af1e6b73197ecf3f6db':
  dnxhd: Print unknown header when found

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-05-13 22:11:04 +02:00
Vittorio Giovara
d84429d41e dnxhd: Print unknown header when found 2015-05-12 16:30:48 +01:00
Carl Eugen Hoyos
3ecb82dd41 dnxhddec: Fix pixel format change
Regression introduced in 598f7d046c.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-05-01 14:52:24 +01:00
Michael Niedermayer
8f7b022c8c Merge commit '6a85dfc830f51f1f5c2d36d4182d265c1ea3ba25'
* commit '6a85dfc830f51f1f5c2d36d4182d265c1ea3ba25':
  lavc: Replace av_dlog and tprintf with internal macros

Conflicts:
	libavcodec/aacdec.c
	libavcodec/audio_frame_queue.c
	libavcodec/bitstream.c
	libavcodec/dcadec.c
	libavcodec/dnxhddec.c
	libavcodec/dvbsubdec.c
	libavcodec/dvdec.c
	libavcodec/dvdsubdec.c
	libavcodec/get_bits.h
	libavcodec/gifdec.c
	libavcodec/h264.h
	libavcodec/h264_cabac.c
	libavcodec/h264_cavlc.c
	libavcodec/h264_loopfilter.c
	libavcodec/h264_refs.c
	libavcodec/imc.c
	libavcodec/interplayvideo.c
	libavcodec/jpeglsdec.c
	libavcodec/libopencore-amr.c
	libavcodec/mjpegdec.c
	libavcodec/mpeg12dec.c
	libavcodec/mpegvideo_enc.c
	libavcodec/mpegvideo_parser.c
	libavcodec/pngdec.c
	libavcodec/ratecontrol.c
	libavcodec/rv10.c
	libavcodec/svq1dec.c
	libavcodec/vqavideo.c
	libavcodec/wmadec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-04-20 04:10:10 +02:00
Vittorio Giovara
6a85dfc830 lavc: Replace av_dlog and tprintf with internal macros 2015-04-19 12:41:59 +01:00
Michael Niedermayer
72a580268f Merge commit '5980c924e309ae1dde8bd52d9938f94ff02602eb'
* commit '5980c924e309ae1dde8bd52d9938f94ff02602eb':
  dnxhd: Log the selected profile id

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-04-09 20:26:18 +02:00
Vittorio Giovara
5980c924e3 dnxhd: Log the selected profile id 2015-04-09 13:51:58 +02:00
Carl Eugen Hoyos
dcac15a84c lavc/dnxhd: Fix pix_fmt change.
Fixes ticket #4400.
2015-03-28 17:36:02 +01:00
Michael Niedermayer
77bd35d76d avcodec/dnxhddec: reset cur_field for non interlaced frames
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-19 23:56:31 +01:00
Michael Niedermayer
d3bd943108 avcodec/dnxhddec: Reset is_444 if format is not 444
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-19 23:33:36 +01:00
Michael Niedermayer
2c660e34cf avcodec/dnxhddec: Check that the frame is interlaced before using cur_field
Fixes Ticket4227

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-19 23:28:39 +01:00
Michael Niedermayer
56252a5e09 Merge commit '1a07df31128da3a0020b66502399989b91770d44'
* commit '1a07df31128da3a0020b66502399989b91770d44':
  DNxHD: Add support for id 1258 (DNx100 960x720@8)

Conflicts:
	Changelog
	libavcodec/dnxhddata.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-29 21:21:49 +01:00
Michael Niedermayer
64e7cf1253 Merge commit '598f7d046cbf306706623210c5baafa3b7cd1df3'
* commit '598f7d046cbf306706623210c5baafa3b7cd1df3':
  DNxHD: Simplify pixel format detection

Conflicts:
	libavcodec/dnxhddec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-29 20:54:25 +01:00
Michael Niedermayer
e5b7e2224f Merge commit '41e03e284ee7b0d4caa3a5d28681ad46e3105d65'
* commit '41e03e284ee7b0d4caa3a5d28681ad46e3105d65':
  DNxHD: More verbose error messages

Conflicts:
	libavcodec/dnxhddec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-01-29 20:38:35 +01:00
Vittorio Giovara
1a07df3112 DNxHD: Add support for id 1258 (DNx100 960x720@8)
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-01-29 15:04:57 +00:00
Vittorio Giovara
598f7d046c DNxHD: Simplify pixel format detection
Error out in case of unknown values.
2015-01-29 15:04:46 +00:00
Vittorio Giovara
41e03e284e DNxHD: More verbose error messages 2015-01-29 15:04:35 +00:00
Michael Niedermayer
f3c0e0bf6f avcodec/dnxhddec: treat pix_fmt like width/height
Fixes out of array accesses
Fixes: asan_heap-oob_22c9a39_16_015.mxf
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-10-29 00:57:52 +01:00
Michael Niedermayer
581b5f0b9b Merge commit 'e3fcb14347466095839c2a3c47ebecff02da891e'
* commit 'e3fcb14347466095839c2a3c47ebecff02da891e':
  dsputil: Split off IDCT bits into their own context

Conflicts:
	configure
	libavcodec/aic.c
	libavcodec/arm/Makefile
	libavcodec/arm/dsputil_init_arm.c
	libavcodec/arm/dsputil_init_armv6.c
	libavcodec/asvdec.c
	libavcodec/dnxhdenc.c
	libavcodec/dsputil.c
	libavcodec/dvdec.c
	libavcodec/dxva2_mpeg2.c
	libavcodec/intrax8.c
	libavcodec/mdec.c
	libavcodec/mjpegdec.c
	libavcodec/mjpegenc_common.h
	libavcodec/mpegvideo.c
	libavcodec/ppc/dsputil_altivec.h
	libavcodec/ppc/dsputil_ppc.c
	libavcodec/ppc/idctdsp.c
	libavcodec/x86/Makefile
	libavcodec/x86/dsputil_init.c
	libavcodec/x86/dsputil_mmx.c
	libavcodec/x86/dsputil_x86.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-07-01 15:22:11 +02:00
Diego Biurrun
e3fcb14347 dsputil: Split off IDCT bits into their own context 2014-06-30 07:58:46 -07:00
Michael Niedermayer
2b05db4f81 Merge commit 'e74433a8e6fc00c8dbde293c97a3e45384c2c1d9'
* commit 'e74433a8e6fc00c8dbde293c97a3e45384c2c1d9':
  dsputil: Split clear_block*/fill_block* off into a separate context

Conflicts:
	configure
	libavcodec/asvdec.c
	libavcodec/dnxhddec.c
	libavcodec/dnxhdenc.c
	libavcodec/dsputil.h
	libavcodec/eamad.c
	libavcodec/intrax8.c
	libavcodec/mjpegdec.c
	libavcodec/ppc/dsputil_ppc.c
	libavcodec/vc1dec.c
	libavcodec/x86/dsputil_init.c
	libavcodec/x86/dsputil_mmx.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-19 04:54:38 +02:00
Diego Biurrun
e74433a8e6 dsputil: Split clear_block*/fill_block* off into a separate context 2014-06-18 14:07:23 -07:00
Michael Niedermayer
bad101ab8a Merge commit '89ef08c992c484a46711b1a68a988303679c288e'
* commit '89ef08c992c484a46711b1a68a988303679c288e':
  DNxHD: K&R formatting cosmetics

Conflicts:
	libavcodec/dnxhd_parser.c
	libavcodec/dnxhddec.c
	libavcodec/dnxhdenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-04-11 14:04:10 +02:00
Vittorio Giovara
89ef08c992 DNxHD: K&R formatting cosmetics 2014-04-11 12:09:08 +02:00
Michael Niedermayer
51290068fa Merge commit 'e95018b694c0774477abec5bbf86ecc7946a9a28'
* commit 'e95018b694c0774477abec5bbf86ecc7946a9a28':
  dnxhd: Support DNx444

Conflicts:
	Changelog
	libavcodec/dnxhddata.c
	libavcodec/dnxhddec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-02-10 03:42:06 +01:00
Michael Niedermayer
8c596864cd Merge commit '28e508a94677d5dffde009c5f8ca7d6a4d2ca8e8'
* commit '28e508a94677d5dffde009c5f8ca7d6a4d2ca8e8':
  dnxhddec: return proper error code

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-02-09 20:52:05 +01:00
Kostya Shishkov
e95018b694 dnxhd: Support DNx444
Bug-Id: 99
Bug-Id: videolan/9620
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-02-09 19:53:35 +01:00
Alexandra Khirnova
28e508a946 dnxhddec: return proper error code
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2014-02-09 18:36:16 +01:00
Michael Niedermayer
965fa6b0d9 Merge commit 'fb0c9d41d685abb58575c5482ca33b8cd457c5ec'
* commit 'fb0c9d41d685abb58575c5482ca33b8cd457c5ec':
  avutil: remove timer.h include from internal.h

Conflicts:
	libavcodec/ffv1dec.c
	libavutil/internal.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-01-26 01:54:55 +01:00