Ticket #9068: optional_coktelvideo_indeo3.patch

File optional_coktelvideo_indeo3.patch, 7.0 KB (added by DrMcCoy, 10 years ago)
  • configure

    diff --git a/configure b/configure
    index 589ae03..7cd1c15 100755
    a b _text_console=no  
    116116_mt32emu=yes
    117117_build_hq_scalers=yes
    118118_build_scalers=yes
     119_indeo3=auto
    119120# Default vkeybd/keymapper options
    120121_vkeybd=no
    121122_keymapper=no
    Optional Libraries:  
    609610  --with-mpeg2-prefix=DIR  Prefix where libmpeg2 is installed (optional)
    610611  --enable-mpeg2           enable mpeg2 codec for cutscenes [no]
    611612
     613  --disable-indeo3         disable Indeo3 decoder [autodetect]
     614
    612615  --with-fluidsynth-prefix=DIR  Prefix where libfluidsynth is installed (optional)
    613616  --disable-fluidsynth     disable fluidsynth MIDI driver [autodetect]
    614617
    for ac_option in $@; do  
    654657        --enable-nasm)            _nasm=yes       ;;
    655658        --disable-nasm)           _nasm=no        ;;
    656659        --enable-mpeg2)           _mpeg2=yes      ;;
     660        --disable-indeo3)         _indeo3=no      ;;
     661        --enable-indeo3)          _indeo3=yes     ;;
    657662        --disable-fluidsynth)     _fluidsynth=no  ;;
    658663        --enable-readline)        _readline=yes   ;;
    659664        --disable-readline)       _readline=no    ;;
    add_to_config_mk_if_no $_build_hq_scalers 'DISABLE_HQ_SCALERS = 1'  
    16521657add_to_config_mk_if_no $_build_scalers      'DISABLE_SCALERS = 1'
    16531658
    16541659#
     1660# Check whether to compile the Indeo3 decoder
     1661#
     1662if test "$_indeo3" = auto ; then
     1663        # Autodetect. Build if either the gob engine or plugins are enabled
     1664        if test `get_engine_build gob` = yes || test "$_dynamic_modules" = yes ; then
     1665                _indeo3="yes"
     1666        else
     1667                _indeo3="no"
     1668        fi
     1669fi
     1670if test "$_indeo3" = no ; then
     1671        _def_indeo3='#undef USE_INDEO3'
     1672else
     1673        _def_indeo3='#define USE_INDEO3'
     1674fi
     1675add_to_config_mk_if_yes "$_indeo3" 'USE_INDEO3 = 1'
     1676
     1677#
    16551678# Check for math lib
    16561679#
    16571680cat > $TMPC << EOF
    if test "$_mt32emu" = yes ; then  
    20032026        echo_n ", MT-32 emu"
    20042027fi
    20052028
     2029if test "$_indeo3" = yes ; then
     2030        echo_n ", Indeo3 decoder"
     2031fi
     2032
    20062033if test "$_text_console" = yes ; then
    20072034        echo_n ", text console"
    20082035fi
    $_def_readline  
    22302257/* Options */
    22312258$_def_text_console
    22322259$_def_mt32emu
     2260$_def_indeo3
    22332261
    22342262/* Plugin settings */
    22352263$_def_plugin
  • graphics/video/coktelvideo/coktelvideo.cpp

    diff --git a/graphics/video/coktelvideo/coktelvideo.cpp b/graphics/video/coktelvideo/coktelvideo.cpp
    index 39aeca0..82d60d8 100644
    a b  
    2323 *
    2424 */
    2525
     26#include "graphics/video/coktelvideo/coktelvideo.h"
     27
     28#ifdef GRAPHICS_VIDEO_COKTELVIDEO_H
     29
    2630#include "common/endian.h"
    2731#include "common/system.h"
    2832
    2933#include "graphics/dither.h"
    30 #include "graphics/video/coktelvideo/coktelvideo.h"
    3134#include "graphics/video/coktelvideo/indeo3.h"
    3235
    3336namespace Graphics {
    bool Vmd::assessVideoProperties() {  
    11271130
    11281131        if (_externalCodec) {
    11291132                if (_videoCodec == MKID_BE('iv32')) {
     1133#ifdef USE_INDEO3
    11301134                        _features &= ~kFeaturesPalette;
    11311135                        _features |=  kFeaturesFullColor;
    11321136                        _codecIndeo3 = new Indeo3(_width, _height, _palLUT);
     1137#else
     1138                        warning("Vmd::assessVideoProperties(): Indeo3 decoder not compiled in");
     1139#endif
    11331140                } else {
    11341141                        char *fourcc = (char *) &_videoCodec;
    11351142
    bool Vmd::assessVideoProperties() {  
    11861193                }
    11871194        }
    11881195
     1196#ifdef USE_INDEO3
    11891197        if (_externalCodec && _codecIndeo3)
    11901198                _features |= kFeaturesSupportsDouble;
     1199#endif
    11911200
    11921201        return true;
    11931202}
    void Vmd::setDoubleMode(bool doubleMode) {  
    15021511
    15031512        }
    15041513
     1514#ifdef USE_INDEO3
    15051515        if (_codecIndeo3) {
    15061516                delete _codecIndeo3;
    15071517
    15081518                _codecIndeo3 = new Indeo3(_width * (doubleMode ? 2 : 1),
    15091519                                _height * (doubleMode ? 2 : 1), _palLUT);
    15101520        }
     1521#endif
    15111522
    15121523        _doubleMode = doubleMode;
    15131524}
    void Vmd::clear(bool del) {  
    15531564        Imd::clear(del);
    15541565
    15551566        if (del) {
     1567#ifdef USE_INDEO3
    15561568                delete _codecIndeo3;
     1569#endif
    15571570                delete[] _frames;
    15581571                delete[] _vidMemBuffer;
    15591572        }
    void Vmd::clear(bool del) {  
    15611574        _hasVideo   = true;
    15621575        _videoCodec = 0;
    15631576
     1577#ifdef USE_INDEO3
    15641578        _codecIndeo3 = 0;
     1579#endif
    15651580
    15661581        _partsPerFrame = 0;
    15671582        _frames = 0;
    uint32 Vmd::renderFrame(int16 &left, int16 &top, int16 &right, int16 &bottom) {  
    17951810        int16 height = bottom - top  + 1;
    17961811        int16 sW     = _vidMemWidth;
    17971812        int16 sH     = _vidMemHeight;
    1798         uint32 dataLen = _frameDataLen;
    17991813
    18001814        byte *dataPtr   = _frameData;
    18011815        byte *imdVidMem = _vidMem + sW * top + left;
    uint32 Vmd::renderFrame(int16 &left, int16 &top, int16 &right, int16 &bottom) {  
    18091823        uint8 type;
    18101824        byte *dest = imdVidMem;
    18111825
     1826#ifdef USE_INDEO3
     1827        uint32 dataLen = _frameDataLen;
     1828
    18121829        if (Indeo3::isIndeo3(dataPtr, dataLen)) {
    18131830                if (!_codecIndeo3)
    18141831                        return 0;
    uint32 Vmd::renderFrame(int16 &left, int16 &top, int16 &right, int16 &bottom) {  
    18311848                        return 0;
    18321849                }
    18331850
     1851#else
     1852
     1853        if (_externalCodec) {
     1854                return 0;
     1855        } else {
     1856
     1857#endif
     1858
    18341859                type   = *dataPtr++;
    18351860                srcPtr =  dataPtr;
    18361861
    Common::MemoryReadStream *Vmd::getExtraData(const char *fileName) {  
    22772302}
    22782303
    22792304} // End of namespace Graphics
     2305
     2306#endif // GRAPHICS_VIDEO_COKTELVIDEO_H
  • graphics/video/coktelvideo/coktelvideo.h

    diff --git a/graphics/video/coktelvideo/coktelvideo.h b/graphics/video/coktelvideo/coktelvideo.h
    index db80b4c..b24195d 100644
    a b  
    2323 *
    2424 */
    2525
     26// Currently, only GOB plays IMDs and VMDs, so skip compiling if GOB is disabled.
     27#if !(defined(ENABLE_GOB) || defined(DYNAMIC_MODULES))
     28
     29// Do not compile the CoktelVideo code
     30
     31#else
     32
    2633#ifndef GRAPHICS_VIDEO_COKTELVIDEO_H
    2734#define GRAPHICS_VIDEO_COKTELVIDEO_H
    2835
     36#include "common/scummsys.h"
    2937#include "common/stream.h"
    3038#include "common/array.h"
    3139#include "graphics/dither.h"
     
    3442
    3543namespace Graphics {
    3644
     45#ifdef USE_INDEO3
    3746class Indeo3;
     47#endif
    3848
    3949/** Common interface for handling Coktel Vision videos and derivated formats. */
    4050class CoktelVideo {
    protected:  
    475485        bool _doubleMode;
    476486
    477487        Graphics::PaletteLUT *_palLUT;
     488
     489#ifdef USE_INDEO3
    478490        Indeo3 *_codecIndeo3;
     491#endif
    479492
    480493        void clear(bool del = true);
    481494
    protected:  
    519532} // End of namespace Graphics
    520533
    521534#endif // GRAPHICS_VIDEO_COKTELVIDEO_H
     535
     536#endif // Engine and dynamic plugins guard
  • graphics/video/coktelvideo/indeo3.cpp

    diff --git a/graphics/video/coktelvideo/indeo3.cpp b/graphics/video/coktelvideo/indeo3.cpp
    index 26d1e4c..581f59b 100644
    a b  
    2323 *
    2424 */
    2525
     26#include "common/scummsys.h"
     27
     28#ifdef USE_INDEO3
     29
    2630/* Intel Indeo 3 decompressor, derived from ffmpeg.
    2731 *
    2832 * Original copyright note: * Intel Indeo 3 (IV31, IV32, etc.) video decoder for ffmpeg
    const uint32 Indeo3::correctionhighorder[] = {  
    34773481};
    34783482
    34793483} // End of namespace Graphics
     3484
     3485#endif // USE_INDEO3
  • graphics/video/coktelvideo/indeo3.h

    diff --git a/graphics/video/coktelvideo/indeo3.h b/graphics/video/coktelvideo/indeo3.h
    index c417a54..af6ef26 100644
    a b  
    2323 *
    2424 */
    2525
     26#include "common/scummsys.h"
     27
     28#ifdef USE_INDEO3
     29
    2630/* Intel Indeo 3 decompressor, derived from ffmpeg.
    2731 *
    2832 * Original copyright note:
    private:  
    118122} // End of namespace Graphics
    119123
    120124#endif // GRAPHICS_VIDEO_INDEO3_H
     125
     126#endif // USE_INDEO3