Changeset e5747cadd72ca895f2d4d28137dc73a02d9632be

Show
Ignore:
Timestamp:
29/06/08 17:12:40 (5 months ago)
Author:
Rémi Denis-Courmont <rdenis@simphalempin.com>
git-committer:
Rémi Denis-Courmont <rdenis@simphalempin.com> 1214752360 +0300
git-parent:

[025d0a239f580936ee53685119daebbc9a09ed13]

git-author:
Jonathan Rosser <jrosser@rd.bbc.co.uk> 1214583436 +0100
Message:

Introduce new codec module to decode dirac video via libschroedinger

Schroedinger is a fast decoder of the Dirac video codec. This plugin
is currently the most complete dirac decoder (compared with ffmpeg or
codec/dirac.c) and should ideally be used in preference

- Input data blocks are handed over to schro which eventually free's them

(avoids memcpy). Freed by SchroBufferFree?()

- Share picture storage between schro and vlc -- avoids memcpy of picture

data after decoding. Freed by SchroFrameFree?()

- Autodetection of libschroedinger in configure.ac

May be disabled with --disable-schroedinger

- Bumped decoding priority to 200, to beat libavcodec.c and dirac.c,

this module does a better job than either of them.

- Remove potential memory leak when allocating pictures
- Always use p_block rather than priv in SchroBufferFree?
- Performs pts interpolation for streams that do not have one pts per picture
- Set progressive, top_field_first and nb_fields on picture_t's properly
- Fix copyright date in header
- Reorder picture_pts_t structure for efficiency
- Print 64 bit types correctly with "%"PRId64
- No need to p_buffer->i_buffer=0 before buffer_Release()
- Work around schroedinger's lack of handling multiple parseunits per block
- Work around corrupt data produced by demux/ts.c after discontinuity
- Correctly reset decoder at Dirac END_OF_SEQUENCE
- Split decoding loop into two parts:

  • First, injecting [valid] parse units into the decoder
  • Second, itterating the decoder

Signed-off-by: David Flynn <davidf@woaf.net>
Signed-off-by: Rémi Denis-Courmont <rdenis@simphalempin.com>

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • configure.ac

    r3c5f3a2 re5747ca  
    35853585      AC_MSG_ERROR([libdirac >= 0.10.0 doesn't appear to be installed on your system.]) 
    35863586  ]) 
     3587fi 
     3588 
     3589dnl 
     3590dnl  schroedinger decoder plugin (for dirac format video) 
     3591dnl 
     3592AC_ARG_ENABLE(schroedinger, 
     3593[  --disable-schroedinger   high performance dirac codec (default enabled)]) 
     3594if test "${enable_schroedinger}" != "no"; then 
     3595  PKG_CHECK_MODULES(SCHROEDINGER,[schroedinger-1.0 >= 1.0], [ 
     3596      VLC_ADD_PLUGIN([schroedinger]) 
     3597      VLC_ADD_CFLAGS([schroedinger],[$SCHROEDINGER_CFLAGS]) 
     3598      VLC_ADD_LIBS([schroedinger],[$SCHROEDINGER_LIBS]) ], [ 
     3599        AS_IF([test "x${enable_schroedinger}" != "x"], [ 
     3600          AC_MSG_ERROR([${SCHROEDINGER_PKG_ERRORS}]) 
     3601        ]) 
     3602]) 
    35873603fi 
    35883604 
  • modules/codec/Modules.am

    rf7d5f3e re5747ca  
    3737SOURCES_cc = cc.c cc.h 
    3838SOURCES_kate = kate.c 
     39SOURCES_schroedinger = schroedinger.c