Ticket #9294: 0002-Add-access-to-font-attachments-in-avformatdecoder.patch

File 0002-Add-access-to-font-attachments-in-avformatdecoder.patch, 4.7 KB (added by slackerlinux85@…, 13 years ago)

font attachment code libass version

  • mythtv/external/FFmpeg/libavcodec/myth_utils.c

    From 409d10bf2d20e4a70e12e90dba7a22eb7ab91eba Mon Sep 17 00:00:00 2001
    From: shawn king <slackerlinux85@gmail.com>
    Date: Fri, 7 Jan 2011 13:15:55 +1000
    Subject: [PATCH 2/3] Add access to font attachments in avformatdecoder
    
    ---
     mythtv/external/FFmpeg/libavcodec/myth_utils.c |    4 ++++
     mythtv/libs/libmythtv/avformatdecoder.cpp      |   22 ++++++++++++++++++++++
     mythtv/libs/libmythtv/avformatdecoder.h        |    1 +
     mythtv/libs/libmythtv/decoderbase.h            |    2 ++
     4 files changed, 29 insertions(+), 0 deletions(-)
    
    diff --git a/mythtv/external/FFmpeg/libavcodec/myth_utils.c b/mythtv/external/FFmpeg/libavcodec/myth_utils.c
    index bcca5d9..dd90f7b 100644
    a b const char *ff_codec_id_string(enum CodecID codec_id) 
    218218
    219219        case CODEC_ID_MPEG2TS:          return "MPEG2TS";
    220220
     221            /* Attachment codecs */
     222        case CODEC_ID_TTF:              return "TTF font";
     223
    221224        case CODEC_ID_PROBE:            return "PROBE";
    222225    }
    223226    return "Unknown Codec ID";
    const char *ff_codec_type_string(enum CodecType codec_type) 
    235238        case CODEC_TYPE_AUDIO:         return "Audio";
    236239        case CODEC_TYPE_DATA:          return "Data";
    237240        case CODEC_TYPE_SUBTITLE:      return "Subtitle";
     241        case CODEC_TYPE_ATTACHMENT:    return "Attachment";
    238242    }
    239243    return "Invalid Codec Type";
    240244};
  • mythtv/libs/libmythtv/avformatdecoder.cpp

    diff --git a/mythtv/libs/libmythtv/avformatdecoder.cpp b/mythtv/libs/libmythtv/avformatdecoder.cpp
    index 621b8bb..4a0a0b6 100644
    a b int AvFormatDecoder::ScanStreams(bool novideo) 
    16331633    bitrate = 0;
    16341634    fps = 0;
    16351635
     1636    tracks[kTrackTypeAttachment].clear();
    16361637    tracks[kTrackTypeAudio].clear();
    16371638    tracks[kTrackTypeSubtitle].clear();
    16381639    tracks[kTrackTypeTeletextCaptions].clear();
    int AvFormatDecoder::ScanStreams(bool novideo) 
    18481849                        .arg(ff_codec_type_string(enc->codec_type)));
    18491850                break;
    18501851            }
     1852            case CODEC_TYPE_ATTACHMENT:
     1853            {
     1854                if (enc->codec_id == CODEC_ID_TTF)
     1855                   tracks[kTrackTypeAttachment].push_back(
     1856                       StreamInfo(i, 0, 0, ic->streams[i]->id, 0));
     1857                bitrate += enc->bit_rate;
     1858                VERBOSE(VB_PLAYBACK, LOC + QString("Attachemnt codec (%1)")
     1859                        .arg(ff_codec_type_string(enc->codec_type)));
     1860                break;
     1861            }
    18511862            default:
    18521863            {
    18531864                bitrate += enc->bit_rate;
    QByteArray AvFormatDecoder::GetSubHeader(uint trackNo) const 
    33323343                   ic->streams[tracks[kTrackTypeSubtitle][trackNo].av_stream_index]->codec->subtitle_header_size);
    33333344}
    33343345
     3346void AvFormatDecoder::GetAttachmentData(uint trackNo, QByteArray &filename, QByteArray &data)
     3347{
     3348   if (trackNo >= tracks[kTrackTypeAttachment].size())
     3349        return;
     3350
     3351    StreamInfo sinfo = tracks[kTrackTypeAttachment][trackNo];
     3352
     3353    filename = QByteArray(ic->streams[sinfo.av_stream_index]->filename);
     3354    data = QByteArray((char *)ic->streams[sinfo.av_stream_index]->codec->extradata, ic->streams[sinfo.av_stream_index]->codec->extradata_size);
     3355}
     3356
    33353357bool AvFormatDecoder::SetAudioByComponentTag(int tag)
    33363358{
    33373359    for (uint i = 0; i < tracks[kTrackTypeAudio].size(); i++)
  • mythtv/libs/libmythtv/avformatdecoder.h

    diff --git a/mythtv/libs/libmythtv/avformatdecoder.h b/mythtv/libs/libmythtv/avformatdecoder.h
    index 0d04a44..5810cc2 100644
    a b class AvFormatDecoder : public DecoderBase 
    162162
    163163    virtual QString GetXDS(const QString&) const;
    164164    virtual QByteArray GetSubHeader(uint trackNo) const;
     165    virtual void GetAttachmentData(uint trackNo, QByteArray &filename, QByteArray &data);
    165166
    166167    // MHEG stuff
    167168    virtual bool SetAudioByComponentTag(int tag);
  • mythtv/libs/libmythtv/decoderbase.h

    diff --git a/mythtv/libs/libmythtv/decoderbase.h b/mythtv/libs/libmythtv/decoderbase.h
    index 3f8061a..59430d2 100644
    a b typedef enum TrackTypes 
    3131    kTrackTypeTeletextCaptions,
    3232    kTrackTypeTeletextMenu,
    3333    kTrackTypeRawText,
     34    kTrackTypeAttachment,
    3435    kTrackTypeCount,
    3536
    3637    kTrackTypeTextSubtitle,
    class DecoderBase 
    191192
    192193    virtual QString GetXDS(const QString&) const { return QString::null; }
    193194    virtual QByteArray GetSubHeader(uint trackNo) const { return QByteArray(); }
     195    virtual void GetAttachmentData(uint trackNo, QByteArray &filename, QByteArray &data) { return; }
    194196
    195197    // MHEG/MHI stuff
    196198    virtual bool SetAudioByComponentTag(int) { return false; }