- Mar 07, 2025
-
-
Petter Reinholdtsen authored
Added info.c to libtheoraenc source and dropped library dependency on libtheoradec. Addresses issue reported in https://bugs.debian.org/923940 about some symbols being unresolved.
-
- Oct 22, 2020
-
-
Zebediah Figura authored
GStreamer's "theoradec" element always calls th_decode_ctl() for all telemetry options, passing 0 if they are not enabled. This results in our creating a Cairo buffer and performing YUV/RGB conversion, even if all telemetry is disabled, which is very slow and can cause noticeable lag during playback.
-
- Feb 25, 2020
-
-
Signed-off-by:
Ralph Giles <giles@thaumas.net>
-
From GCC documentation (for GCC 5 and above): - ‘+’ means that this operand is both read and written by the instruction. - Only read-only operands can use ‘%’. Thus, ‘+’ and ‘%’ cannot be used at the same time. Signed-off-by:
Timothy B. Terriberry <tterribe@xiph.org> Signed-off-by:
Ralph Giles <giles@thaumas.net>
-
- Feb 14, 2020
-
-
Tristan Matthews authored
This will bail on files exceeding 16384x16384 (useful for fuzzing).
-
- Oct 23, 2017
-
-
Ralph Giles authored
This prefixes generated object file names with their relative path. The idea is to avoid conflicts. We don't have any, but automake warns about the issue, so set the option to address that.
-
Signed-off-by:
Ralph Giles <giles@thaumas.net>
-
- Jul 20, 2017
-
-
Tristan Matthews authored
Seems to only effect OS X according to Travis CI
-
- Sep 23, 2016
-
-
Timothy B. Terriberry authored
We made sure to emit emms before potentially calling/returning to applicate code, but not before calling libc code. It turns out musl libc's malloc/free implementation use floating point, so they don't work correctly unless we do. Add some extra calls to make sure the FPU is in the proper state any place we might potentially call malloc or free. Thanks to Rune (ztsdztsd on Trac) for the report. Fixes #2287
-
Timothy B. Terriberry authored
If we have some dupe frames right near the end of the buffer, our metric window can be slightly larger than the buffer. However, the clamping we use to determine how many frames' worth of metrics to add to the buffer had a mix of signed and unsigned types, so if that number when negative, instead of clamping against zero, it would ask for all remaining frames in the file. That would cause an infinite loop when we tried to find the last keyframe in the circular buffer in oc_enc_select_qi() (which was not big enough to actually hold that many frames). This patch changes the clamp to a form that works with all unsigned values. Thanks to Brion Vibber for the report. Fixes #2229 Forward-port of r19507 from svn.
-
- Jul 27, 2016
-
-
Timothy B. Terriberry authored
In the case where we got a data packet before receiving all three headers, the old code would check to see if the second through seventh bytes matched the magic string "theora" (extremely unlikely, but possible), and if so, return TH_EBADHEADER, otherwise return TH_ENOTFORMAT. That this was not consistent was a bit non-sensical. 5a5f5bb2 changed to returning TH_EBADHEADER if we got a data packet after receiving the first header, but left the old behavior for the first packet. Change instead to explicitly return TH_ENOTFORMAT if the first header was missing (since we only check one bit of the packet to determine whether or not it's a data packet, odds are it's a packet for some other kind of data, like a Vorbis header). We continue to return TH_EBADHEADER if we see a data packet after encountering a valid header, but before reading all three. Also re-arrange the NULL checks to follow continue to allow the undocumented ability to pass in NULL for parameters which are not needed by the next header in the sequence. E.g., it's perfectly all right to pass NULL for _setup when expecting to read the comment header next. In this case we'll now return TH_EBADHEADER instead of TH_EFAULT if the packet was actually a data packet.
-
Timothy B. Terriberry authored
Our documentation says we will, so we should. Thanks to Chris Peterson for the report. Fixes #2279.
-
- Oct 31, 2014
-
-
Timothy B. Terriberry authored
oc_mb_fill_cmapping11() was defined without the last two parameters of its fellow mapping functions, meaning it got called with extra undeclared parameters. This could confuse the emscripten JavaScript cross-compiler's asm.js optimizations, as it's very picky about function signatures. Fixes #2068. Patch by Brion Vibber <brion@pobox.com>. svn path=/trunk/theora/; revision=19261
-
- Jul 23, 2014
-
-
Ralph Giles authored
Patch by valtri. https://trac.xiph.org/ticket/2032 svn path=/trunk/theora/; revision=19181
-
Ralph Giles authored
svn path=/trunk/theora/; revision=19178
-
- Feb 11, 2014
-
-
Tristan Matthews authored
svn path=/trunk/theora/; revision=19086
-
- Nov 18, 2013
-
-
Timothy B. Terriberry authored
svn path=/trunk/theora/; revision=19019
-
- Feb 23, 2013
-
-
Timothy B. Terriberry authored
I accidentally broke it in r18218. svn path=/trunk/theora/; revision=18794
-
- Jan 08, 2013
-
-
Timothy B. Terriberry authored
Newer versions of png.h don't include it for us. This is only needed when compiling with OC_DUMP_IMAGES (i.e., for debugging). svn path=/trunk/theora/; revision=18760
-
- Jun 02, 2012
-
-
Timothy B. Terriberry authored
There was never any reason for these to not be const, and it shouldn't break backwards API or ABI compatibility. svn path=/trunk/theora/; revision=18348
-
- May 08, 2012
-
-
Timothy B. Terriberry authored
This was broken when the dequant_tables indexing changed in commit r16102, but it only affected post-processing quality, so we never noticed. With gcc 4.8.0, this can now trigger a segfault during decoder initialization. svn path=/trunk/theora/; revision=18268
-
- Mar 31, 2012
-
-
Gregory Maxwell authored
Save activity from first pass. Gives a small SSIM improvement (e.g. 0.04dB for 360p elephants dream at 750kbit/s) svn path=/trunk/theora/; revision=18223
-
- Mar 06, 2012
-
-
Timothy B. Terriberry authored
Thanks to Holden for the report. svn path=/trunk/theora/; revision=18221
-
- Mar 02, 2012
-
-
Timothy B. Terriberry authored
ref_frame_data was being allocated with the aligned allocator, but freed with the normal _ogg_free() function on failure, which doesn't work. This would only cause a problem if there was just enough memory to satisfy the reference frame allocation (just over 4.5 or 9 bytes per pixel) but not enough for the fragment buffer offets (1/16 or 1/8th byte per pixel). svn path=/trunk/theora/; revision=18219
-
Timothy B. Terriberry authored
This allows it to be used from dump_video without having to disable striped decoding there. svn path=/trunk/theora/; revision=18218
-
- Jul 13, 2011
-
-
Timothy B. Terriberry authored
1) Allow specification of the section alignment and make the default alignment 4 bytes (like the RVCT manual says it should be). This ensures that linking our ARM asm into a Thumb executable won't get the section placed on a 2-byte boundary. 2) Add a linker hint to indicate we don't need an executable stack. Otherwise it assumes we do. 3) Stop building and linking to an (empty) armopts object file. This is needed to make 2) work, since we include this file, so we can't add the linker hint at the end of it, and linking in just one object without that hint makes the whole library ask for an executable stack. svn path=/trunk/theora/; revision=18031
-
- May 20, 2011
-
-
Timothy B. Terriberry authored
Fixes #1751. svn path=/trunk/theora/; revision=17992
-
- May 19, 2011
-
-
Timothy B. Terriberry authored
Patch by mnemo. Fixes #1804. svn path=/trunk/theora/; revision=17989
-
- May 04, 2011
-
-
Timothy B. Terriberry authored
This extends the fix from r17276 dealing with the removal of the DC skip-prevention flag in r17174. If we allow SKIPing even when the cost is right near the maximum representable SSD, then the cost of other blocks can push it over the edge, causing us to randomly skip a block halfway through the macroblock. svn path=/trunk/theora/; revision=17959
-
- Feb 24, 2011
-
-
Timothy B. Terriberry authored
This gives CIF encoding a 37.5% speed up on a Cortex A8. svn path=/trunk/theora/; revision=17874
-
- Feb 10, 2011
-
-
Timothy B. Terriberry authored
svn path=/trunk/theora/; revision=17825
-
Timothy B. Terriberry authored
svn path=/trunk/theora/; revision=17822
-
- Feb 09, 2011
-
-
Ralph Giles authored
This change inserts a new speed level OC_SP_LEVEL_NOSATD (3) between OC_SP_LEVEL_FAST_ANALYSIS (still 2) and OC_SP_LEVEL_NOMC (now 4). The new speed level further accelerates analysis by using the cheaper SAD (sum of absolute differences) metric for measuring distortion instead of the more expensive SATD (sum of absolute transformed differences). The new level is intermediate in both quality and encoding speed between the adjacent speed levels, allowing smoother adaptation to realtime encoding contraints. In particular it's much closer to realtime 720p30 on current Core2 cpus. The cheaper SAD metric is now also used for the fastest NOMC speed level. This is a reduction in quality for this speed level as well, but it also about 10% faster. Since the NOMC mode is already very poor quality, used as a last resort when performance is critical, we deemed this a better option than adding a further NOMC_SATD mode or keeping the old NOMC behaviour. To support the new speed level, parallel copies of the OC_MODE_RD table are kept, one for each metric. The encoder context keeps track of which on to use based ont eh current speed level. Analysis code chooses which metric to calculate and use on the fly. The extra conditionals did not measurably affect encoding time in benchmarks. The metrics collection and fitting code used to generate modedec.h is also updated to track both SAD and SATD measurements. Thanks to Tim Terriberry and Greg Maxwell for their comments and and contributions in reviewing this patch. The implementation of oc_enc_frag_intra_sad is based on one from earlier development work by Greg Maxwell. svn path=/trunk/theora/; revision=17821
-
- Jan 15, 2011
-
-
Timothy B. Terriberry authored
This was only used when a stream started without a keyframe, and was initializing the wrong region of memory. This was harmless (the region it initialized was still safely allocated, it just didn't cover all of the frame we wanted to use as a reference frame), but lead to unpredictable results and valgrind errors. See https://bugzilla.mozilla.org/show_bug.cgi?id=625773 svn path=/trunk/theora/; revision=17780
-
- Dec 16, 2010
-
-
Ralph Giles authored
The specification says that the frame rate numerator and denominator MUST both be greater than zero. This wasn't checked as part of the structure validation code, and in fact passing a zero value here caused a segfault. The code now checks for this in oc_state_init() and returns TH_EINVAL, which is causes th_encode_alloc() and oc_decode_alloc() to return NULL. A check for that NULL return is also added to encoder_example.c to show that it may fail when an invalid th_info parameter is passed. svn path=/trunk/theora/; revision=17760
-
- Dec 14, 2010
-
-
Gregory Maxwell authored
svn path=/trunk/theora/; revision=17756
-
Timothy B. Terriberry authored
Right now we still immediately compute abs(dc), but we will need the signed value to do real DC costing. This commit should not change the output of the encoder. svn path=/trunk/theora/; revision=17755
-
- Dec 13, 2010
-
-
Timothy B. Terriberry authored
The changes in r17745 made PROC and ENDP directives emit multiple lines, leading to mis-matched line numbers between the original RVCT source and the GNU translation. gas allows multiple statements per line, so use them to keep the line numbers in sync. Also, contrary to the commit message in r17745, function names actually do show up correctly in valgrind; I was testing the wrong binary. svn path=/trunk/theora/; revision=17752
-
Timothy B. Terriberry authored
Also knock another instruction off the PMOVMSKB emulation. svn path=/trunk/theora/; revision=17751
-
Timothy B. Terriberry authored
The wrong offset was being used for the shift factor in oc_enc_enquant_table_fixup_neon(), and the wrong value was being returned from oc_enc_quantize_neon() when the entire block was quantized to zero. svn path=/trunk/theora/; revision=17750
-