Skip to content
Snippets Groups Projects
  1. Mar 07, 2025
    • Petter Reinholdtsen's avatar
      Corrected method definition for oc_enc_frag_sub_128_c(). · c2fe318c
      Petter Reinholdtsen authored
      Made sure the implementation matches the prototype.
      c2fe318c
    • Petter Reinholdtsen's avatar
    • Petter Reinholdtsen's avatar
      Switched valgrind run to use LOG_COMPILER and fail on valgrind errors. · f306a235
      Petter Reinholdtsen authored
      This will avoid running valgrind on bash and instead validate the
      test programs themselves.
      f306a235
    • Billae's avatar
    • Petter Reinholdtsen's avatar
      Improve encoder example to reject audio without any channels. · 56615e23
      Petter Reinholdtsen authored
      This avoid a crash on bogus input, just exit with a message instead.
      
      Fixes #2305
      56615e23
    • Petter Reinholdtsen's avatar
      Replaced obsolete uint32 and uint8 with more standard types in example. · 01e16d5d
      Petter Reinholdtsen authored
      Using ogg_uint32_t and uint8_t instead.
      
      Get rid of the following compiler message:
      
      ../../examples/tiff2theora.c:283:1: warning: ‘uint32’ is deprecated [-Wdeprecated-declarations]
        283 | rgb_to_yuv(uint32 *raster,
            | ^~~~~~~~~~
      ../../examples/tiff2theora.c: In function ‘rgb_to_yuv’:
      ../../examples/tiff2theora.c:314:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        314 |         uint8 r0 = TIFFGetR(raster[(h-y)*w + x]);
            |         ^~~~~
      ../../examples/tiff2theora.c:315:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        315 |         uint8 g0 = TIFFGetG(raster[(h-y)*w + x]);
            |         ^~~~~
      ../../examples/tiff2theora.c:316:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        316 |         uint8 b0 = TIFFGetB(raster[(h-y)*w + x]);
            |         ^~~~~
      ../../examples/tiff2theora.c:317:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        317 |         uint8 r1 = TIFFGetR(raster[(h-y)*w + x1]);
            |         ^~~~~
      ../../examples/tiff2theora.c:318:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        318 |         uint8 g1 = TIFFGetG(raster[(h-y)*w + x1]);
            |         ^~~~~
      ../../examples/tiff2theora.c:319:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        319 |         uint8 b1 = TIFFGetB(raster[(h-y)*w + x1]);
            |         ^~~~~
      ../../examples/tiff2theora.c:320:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        320 |         uint8 r2 = TIFFGetR(raster[(h-y1)*w + x]);
            |         ^~~~~
      ../../examples/tiff2theora.c:321:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        321 |         uint8 g2 = TIFFGetG(raster[(h-y1)*w + x]);
            |         ^~~~~
      ../../examples/tiff2theora.c:322:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        322 |         uint8 b2 = TIFFGetB(raster[(h-y1)*w + x]);
            |         ^~~~~
      ../../examples/tiff2theora.c:323:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        323 |         uint8 r3 = TIFFGetR(raster[(h-y1)*w + x1]);
            |         ^~~~~
      ../../examples/tiff2theora.c:324:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        324 |         uint8 g3 = TIFFGetG(raster[(h-y1)*w + x1]);
            |         ^~~~~
      ../../examples/tiff2theora.c:325:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        325 |         uint8 b3 = TIFFGetB(raster[(h-y1)*w + x1]);
            |         ^~~~~
      ../../examples/tiff2theora.c:347:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        347 |         uint8 r = TIFFGetR(raster[(h-y)*w + x]);
            |         ^~~~~
      ../../examples/tiff2theora.c:348:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        348 |         uint8 g = TIFFGetG(raster[(h-y)*w + x]);
            |         ^~~~~
      ../../examples/tiff2theora.c:349:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        349 |         uint8 b = TIFFGetB(raster[(h-y)*w + x]);
            |         ^~~~~
      ../../examples/tiff2theora.c:360:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        360 |         uint8 r0 = TIFFGetR(raster[(h-y)*w + x]);
            |         ^~~~~
      ../../examples/tiff2theora.c:361:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        361 |         uint8 g0 = TIFFGetG(raster[(h-y)*w + x]);
            |         ^~~~~
      ../../examples/tiff2theora.c:362:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        362 |         uint8 b0 = TIFFGetB(raster[(h-y)*w + x]);
            |         ^~~~~
      ../../examples/tiff2theora.c:363:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        363 |         uint8 r1 = TIFFGetR(raster[(h-y)*w + x1]);
            |         ^~~~~
      ../../examples/tiff2theora.c:364:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        364 |         uint8 g1 = TIFFGetG(raster[(h-y)*w + x1]);
            |         ^~~~~
      ../../examples/tiff2theora.c:365:9: warning: ‘uint8’ is deprecated [-Wdeprecated-declarations]
        365 |         uint8 b1 = TIFFGetB(raster[(h-y)*w + x1]);
            |         ^~~~~
      ../../examples/tiff2theora.c: In function ‘tiff_read’:
      ../../examples/tiff2theora.c:387:3: warning: ‘uint32’ is deprecated [-Wdeprecated-declarations]
        387 |   uint32 width;
            |   ^~~~~~
      ../../examples/tiff2theora.c:388:3: warning: ‘uint32’ is deprecated [-Wdeprecated-declarations]
        388 |   uint32 height;
            |   ^~~~~~
      ../../examples/tiff2theora.c:390:3: warning: ‘uint32’ is deprecated [-Wdeprecated-declarations]
        390 |   uint32 *raster;
            |   ^~~~~~
      ../../examples/tiff2theora.c:404:3: warning: ‘uint32’ is deprecated [-Wdeprecated-declarations]
        404 |   raster = malloc(pixels*sizeof(uint32));
            |   ^~~~~~
      01e16d5d
    • Petter Reinholdtsen's avatar
      Rewrote dump_video example to prefer clock_gettime() over ftime() · 794bf8c6
      Petter Reinholdtsen authored
      The ftime method has been removed from POSIX and is depricated on Linux.
      clock_gettime() work better on Linux, but is not available on Windows,
      so fall back to ftime() if autotools/scons fail to detect clock_gettime().
      
      Based on proposal in
      opusfile!9.
      
      Fixes the following compiler messages:
      
      ../../examples/dump_video.c: In function ‘main’:
      ../../examples/dump_video.c:490:5: warning: ‘ftime’ is deprecated: Use gettimeofday or clock_gettime instead [-Werror=deprecated-declarations]
        490 |     ftime(&start);
            |     ^~~~~
      In file included from ../../examples/dump_video.c:40:
      /usr/include/x86_64-linux-gnu/sys/timeb.h:29:12: note: declared here
         29 | extern int ftime (struct timeb *__timebuf)
            |            ^~~~~
      ../../examples/dump_video.c:491:5: warning: ‘ftime’ is deprecated: Use gettimeofday or clock_gettime instead [-Werror=deprecated-declarations]
        491 |     ftime(&last);
            |     ^~~~~
      /usr/include/x86_64-linux-gnu/sys/timeb.h:29:12: note: declared here
         29 | extern int ftime (struct timeb *__timebuf)
            |            ^~~~~
      ../../examples/dump_video.c:505:13: warning: ‘ftime’ is deprecated: Use gettimeofday or clock_gettime instead [-Werror=deprecated-declarations]
        505 |             ftime(&after);
            |             ^~~~~
      /usr/include/x86_64-linux-gnu/sys/timeb.h:29:12: note: declared here
         29 | extern int ftime (struct timeb *__timebuf)
            |            ^~~~~
      794bf8c6
    • Petter Reinholdtsen's avatar
      Use consistent declaration of oc_state_loop_filter_frag_rows_c(). · 46df56a5
      Petter Reinholdtsen authored
      The header used signed char _bf[256], make sure the method uses the
      same.  Adjust pointer arithmetic to use array notation to make operation
      explicit.
      
      Avoid the following compiler message:
      
      ../../lib/state.c:1056:15: warning: argument 2 of type 'signed char *' declared as a pointer [-Warray-parameter=]
       1056 |  signed char *_bv,int _refi,int _pli,int _fragy0,int _fragy_end){
            |  ~~~~~~~~~~~~~^~~
      In file included from ../../lib/state.c:20:
      ../../lib/state.h:526:14: note: previously declared as an array 'signed char[256]'
        526 |  signed char _bv[256],int _refi,int _pli,int _fragy0,int _fragy_end);
            |  ~~~~~~~~~~~~^~~~~~~~
      46df56a5
    • Petter Reinholdtsen's avatar
    • Petter Reinholdtsen's avatar
      Updated autotools setup to avoid warnings from autogen.sh. · 34bf8766
      Petter Reinholdtsen authored
      This avoid obsolete notation.
      
      Increase autoconf dependency to version 2.71.
      34bf8766
    • Petter Reinholdtsen's avatar
      Made sure libtheoraenc do not need libtheoradec. · 14045376
      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.
      14045376
    • Petter Reinholdtsen's avatar
    • Petter Reinholdtsen's avatar
      Dropped passing dummy variable to select() in example, use NULL instead. · 070b5c40
      Petter Reinholdtsen authored
      Both POSIX, the Linux documentation and UNIX Network Programming volume 1
      by Stephens state that NULL is accepted.
      
      This avoid the following compiler message:
      
      ../../examples/player_example.c: In function ‘main’:
      ../../examples/player_example.c:839:22: warning: passing argument 2 to ‘restrict’-qualified parameter aliases with argument 4 [-Werror=restrict]
        839 |           n=select(n,&empty,&writefs,&empty,&timeout);
            |                      ^~~~~~          ~~~~~~
      ../../examples/player_example.c:843:18: warning: passing argument 2 to ‘restrict’-qualified parameter aliases with argument 4 [-Werror=restrict]
        843 |         select(n,&empty,&writefs,&empty,NULL);
            |                  ^~~~~~          ~~~~~~
      070b5c40
  2. Oct 27, 2020
    • Ralph Giles's avatar
      gitlab-ci: Add scons build. · 71807172
      Ralph Giles authored
      Apparently this still has users, so test it, rather than
      removing it. Verify we can build and clean up without error.
      71807172
    • Ralph Giles's avatar
      Add a gitlab ci configuration. · c5a83d0a
      Ralph Giles authored
      Add a build description for gitlab's continuous integration build
      and test runners. This gives us ongoing converage on commmits
      and merge requests in the upstream repository.
      
      Based on the gcc:9 image we currently use for most projects.
      It already includes make and autotools, but we need to install
      dependencies for the example programs and documentation.
      
        - debian buster has fig2dev in its own package.
        - latex-extras is needed for wrapfig, which has been superceeded
          by lwarp-wrapfig.
      
      NB defining a separate job at the test stage clears all the
      generated artefacts, which means we lose our configure script
      and makefiles. Therefore isn't more efficient to just do the
      tests as extra steps in the build stage.
      c5a83d0a
  3. Oct 24, 2020
  4. Oct 22, 2020
    • Zebediah Figura's avatar
      Avoid creating a Cairo buffer if all telemetry options are set to 0. · 5f38d062
      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.
      5f38d062
  5. Jun 18, 2020
  6. Feb 25, 2020
  7. Feb 14, 2020
  8. Oct 23, 2017
  9. Jul 20, 2017
  10. Jul 19, 2017
  11. Jun 05, 2017
  12. Nov 28, 2016
    • Ralph Giles's avatar
      Initialize global pointers in examples. · 91203fdf
      Ralph Giles authored
      Global pointers are initialized to zero in C, but not in C++.
      
      Add an explicit initializer to reduce confusion and avoid
      bugs when the example code is copied into C++ applications.
      
      Based on a patch by Alex Houghton <houghton1411@aol.com>.
      91203fdf
  13. Sep 23, 2016
    • Timothy B. Terriberry's avatar
      Fix linking with musl libc with asm enabled. · 4bd78cd7
      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
      4bd78cd7
    • Timothy B. Terriberry's avatar
      Fix some broken clamping in rate control. · eac29ae2
      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.
      eac29ae2
  14. Jul 27, 2016
    • Timothy B. Terriberry's avatar
      Sanity improvements to oc_dec_headerin() error returns. · 50fd339b
      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.
      50fd339b
Loading