Commit Graph

32492 Commits

Author SHA1 Message Date
Christophe GISQUET 2784d18791 SBR DSP x86: implement SSE sbr_hf_g_filt
Unrolling the main loop to process, instead of 4 elements:
- 8: minor gain of 2 cycles (not worth the extra object size)
- 2: loss of 8 cycles.

Assigning STEP to a register is a loss. Output address (Y) is almost always
unaligned.

Timings:
- C (32/64 bits): 117/109 cycles
- SSE: 57 cycles

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2012-02-23 15:50:09 -08:00
Christophe GISQUET 34454c761f SBR DSP x86: implement SSE sbr_sum_square_sse
The 32bits targets have been compiled with -mfpmath=sse for proper reference.
sbr_sum_square C  /32bits: 82c (unrolled)/102c
               C  /64bits: 69c (unrolled)/82c
               SSE/32bits: 42c
               SSE/64bits: 31c

Use of SSE4.1 dpps to perform the final sum is slower.
Not unrolling to perform 8 operations in a loop yields 10 more cycles.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2012-02-23 15:50:06 -08:00
Christophe GISQUET 2e74a5abc2 SBR DSP: use intptr_t for the ixh parameter.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2012-02-23 15:48:40 -08:00
Ronald S. Bultje 31632e73f4 swf: check return values for av_get/new_packet().
Prevents crashers when using the packet if allocation failed.

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
2012-02-23 12:24:58 -08:00
Derek Buitenhuis 480b133e6f wavpack: Don't shift minclip/maxclip
Since we are clipping before we shift the values to
16 or 32 bits, we should not shift the min/max clip
values to compensate.

Fixes 8 and 24 bit lossy decoding.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2012-02-23 20:43:39 +01:00
Martin Storsjö ba605cef79 rtpenc: Expose the max packet size via an avoption
This allows opting for a lower MTU than what the AVIOContext
indicated, and allows writing into outputs that don't indicate
an MTU at all (such as plain files, which is useful for testing).

This also allows querying for the MTU via the avoption.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-02-23 21:32:52 +02:00
Martin Storsjö f553462041 rtpenc: Move max_packet_size to a context variable
This is in preparation for exposing this via an avoption.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-02-23 21:32:52 +02:00
Martin Storsjö 7337484ed2 rtpenc: Add an option for not sending RTCP packets
Signed-off-by: Martin Storsjö <martin@martin.st>
2012-02-23 21:32:52 +02:00
Anton Khirnov ff311c0918 lavc: drop encode() support for video.
All video encoders have been converted to encode2(), all new encoders
should also use only encode2().
2012-02-23 20:26:26 +01:00
Anton Khirnov 171273fec8 snowenc: switch to encode2(). 2012-02-23 20:26:14 +01:00
Anton Khirnov 8d3348c2c4 snowenc: don't abuse input picture for storing information. 2012-02-23 20:26:04 +01:00
Anton Khirnov 7340008f18 a64multienc: switch to encode2().
We have no decoder, so cannot test if the output is decodable.
2012-02-23 19:56:55 +01:00
Anton Khirnov cfc6ab3199 a64multienc: don't write into output buffer when there's no output. 2012-02-23 19:56:45 +01:00
Anton Khirnov 4da6d194e5 libxvid: switch to encode2(). 2012-02-23 19:55:23 +01:00
Anton Khirnov 760b004086 tiffenc: switch to encode2(). 2012-02-23 19:53:20 +01:00
Anton Khirnov 62acb4937e tiffenc: properly forward error codes in encode_frame(). 2012-02-23 19:52:08 +01:00
Anton Khirnov 2257f66ec5 lavc: drop libdirac encoder.
Libschroedinger is the preferred way to encode dirac video now, it
produces better output and has a nicer API.
2012-02-23 19:50:46 +01:00
Anton Khirnov 577fed3b7c gifenc: switch to encode2(). 2012-02-23 19:50:46 +01:00
Anton Khirnov d8f3365fb0 libvpxenc: switch to encode2(). 2012-02-23 19:50:46 +01:00
Anton Khirnov 0ecf54f9dc flashsvenc: switch to encode2(). 2012-02-23 19:50:46 +01:00
Diego Biurrun b315042c8c Remove libpostproc.
This library does not fit into Libav as a whole and its code is just a
maintenance burden.  Furthermore it is now available as an external project,
which completely obviates any reason to keep it around.

URL: http://git.videolan.org/?p=libpostproc.git
2012-02-23 19:36:16 +01:00
Ronald S. Bultje 01cb62aba2 lcl: don't overwrite input memory.
If the PNG filter is enabled, a PNG-style filter will run over the
input buffer, writing into the buffer. Therefore, if no zlib compression
was used, ensure that we copy into a temporary buffer, otherwise we
overwrite user-provided input data.
2012-02-23 10:31:46 -08:00
Ronald S. Bultje 1d8c4af396 swscale: take first/lastline over/underflows into account for MMX.
Fixes crashes for extremely large resizes (several 100-fold).

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
2012-02-23 10:30:08 -08:00
Ronald S. Bultje 491865b57d swscale: fix underflows in firstline calculations for extreme resizes.
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
2012-02-23 10:30:07 -08:00
Ronald S. Bultje 19a65b5be4 swscale: fix overflows in filterPos[] calculation for large sizes.
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
2012-02-23 10:30:07 -08:00
Anton Khirnov 84db922bf9 libxavs: switch to encode2(). 2012-02-23 19:25:50 +01:00
Anton Khirnov d3b577f00d libxavs: add an AVClass at the beginning of XavsContext. 2012-02-23 19:25:50 +01:00
Anton Khirnov a5f848c86d libxavs: split extradata writing out of encode_nals().
This is done in preparation for the following patch implementing
encode2().

This commit is analogous to 05d699222d for
libx264.
2012-02-23 19:25:50 +01:00
Anton Khirnov 8e8124e173 ljpegenc: switch to encode2(). 2012-02-23 19:25:50 +01:00
Ronald S. Bultje 2b83e8b700 truemotion2: error out if the huffman tree has no nodes.
This prevents crashers and errors further down when reading nodes in the
empty tree.

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
2012-02-23 07:46:25 -08:00
Martin Storsjö ada4e362b9 rtpenc: Add an error message
Also return a proper error code.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-02-23 16:30:09 +02:00
Martin Storsjö c4584f3c1f rtpenc: Allow packetizing H263 according to the old RFC 2190
According to newer RFCs, this packetization scheme should only
be used for interfacing with legacy systems.

Implementing this packetization mode properly requires parsing
the full H263 bitstream to find macroblock boundaries (and knowing
their macroblock and gob numbers and motion vector predictors).

This implementation tries to look for GOB headers (which
can be inserted by using -ps <small number>), but if the GOBs
aren't small enough to fit into the MTU, the packetizer blindly
splits packets at any offset and claims it to be a GOB boundary
(by using Mode A from the RFC). While not correct, this seems
to work with some receivers.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-02-23 15:27:52 +02:00
Martin Storsjö c2ff63e3ac rtpenc: Move the trailing comma into FF_RTP_FLAG_OPTS
This simplifies adding more flags to the macro.

Signed-off-by: Martin Storsjö <martin@martin.st>
2012-02-23 15:27:42 +02:00
Anton Khirnov 3c0ed7d1a8 asv1enc: switch to encode2(). 2012-02-23 14:11:08 +01:00
Anton Khirnov df53a47317 libschroedingerenc: switch to encode2(). 2012-02-23 13:54:34 +01:00
Anton Khirnov 278d88689b ffv1enc: switch to encode2(). 2012-02-23 13:51:29 +01:00
Anton Khirnov f7fa73ac91 libtheoraenc: switch to encode2(). 2012-02-23 13:48:34 +01:00
Anton Khirnov 6d9c27dc85 jpeglsenc: switch to encode2(). 2012-02-23 11:12:39 +01:00
Anton Khirnov 148fc99506 lclenc: switch to encode2(). 2012-02-23 11:11:42 +01:00
Anton Khirnov 21b46747ad qtrleenc: switch to encode2(). 2012-02-23 11:08:50 +01:00
Justin Ruggles 62d5f9e5ca flacdec: set channel_layout based on channel count
Channel layouts are specified in the FLAC format description at
http://flac.sourceforge.net/format.html

fixes Bug 209
2012-02-22 20:14:00 -05:00
Justin Ruggles 3798205a77 mov: set channel layout for AC-3 streams based on the 'dac3' atom info
fixes Bug 225
2012-02-22 20:07:02 -05:00
Ronald S. Bultje 1254022ea7 swscale: fix filtersize clipping.
if srcW<=2, clip(x, 1, srcW-2) still allows srcW to be < 1.
2012-02-22 16:54:20 -08:00
Rafaël Carré 562ebc3077 dxva2: don't check for DXVA_PictureParameters->wDecodedPictureIndex
This structure is well defined by Microsoft at:
http://msdn.microsoft.com/en-us/library/windows/hardware/ff564012(v=vs.85).aspx
Thus, the wDecodedPictureIndex member is guaranteed to exist.

Also, both the MPEG-2 and VC-1 hwaccel decoders depend on this struct member,
but only the VC-1 decoder was disabled if the check failed.

Signed-off-by: Diego Biurrun <diego@biurrun.de>
2012-02-22 22:04:03 +01:00
Paul B Mahol 15b4b505c2 img2: split muxer and demuxer into separate files
Signed-off-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2012-02-22 22:04:03 +01:00
Ronald S. Bultje aac07a7a4c rm: prevent infinite loops for index parsing.
Specifically, prevent jumping back in the file for the next index, since
this can lead to infinite loops where we jump between indexes referring
to each other, and don't read indexes that don't fit in the file.

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
2012-02-22 12:00:23 -08:00
Alex Converse 1cd9a6154b aac: fix infinite loop on end-of-frame with sequence of 1-bits.
Based-on-work-by: Ronald S. Bultje <rsbultje@gmail.com>
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
2012-02-22 11:23:43 -08:00
Alex Converse b142496c56 mov: Add more HDV and XDCAM FourCCs.
Reference: VLC
2012-02-22 11:23:43 -08:00
Anton Khirnov 0584e3ca97 lavf: don't set AVCodecContext.has_b_frames in compute_pkt_fields().
It is not supposed to be done outside lavc.

This is basically a revert of 818062f2f3.

It is unclear what issue this was supposed to fix, if it reappears again
it will have to be fixed in a more proper place.

The wtv-demux test change is because the sample starts with a B-frame.
2012-02-22 19:31:06 +01:00
Ronald S. Bultje e30b3e59a4 rmdec: when using INT4 deinterleaving, error out if sub_packet_h <= 1.
We read sub_packet_h / 2 packets per line of data (during deinterleaving),
which equals zero if sub_packet_h <= 1, thus causing us to not read any
data, leading to an infinite loop.

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
2012-02-22 09:17:27 -08:00