00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "avformat.h"
00023
00024 #define CDG_PACKET_SIZE 24
00025
00026 static int read_header(AVFormatContext *s, AVFormatParameters *ap)
00027 {
00028 AVStream *vst;
00029 int ret;
00030
00031 vst = av_new_stream(s, 0);
00032 if (!vst)
00033 return AVERROR(ENOMEM);
00034
00035 vst->codec->codec_type = AVMEDIA_TYPE_VIDEO;
00036 vst->codec->codec_id = CODEC_ID_CDGRAPHICS;
00037
00039 av_set_pts_info(vst, 32, 1, 300);
00040
00041 ret = avio_size(s->pb);
00042 if (ret > 0)
00043 vst->duration = (ret * vst->time_base.den) / (CDG_PACKET_SIZE * 300);
00044
00045 return 0;
00046 }
00047
00048 static int read_packet(AVFormatContext *s, AVPacket *pkt)
00049 {
00050 int ret;
00051
00052 ret = av_get_packet(s->pb, pkt, CDG_PACKET_SIZE);
00053
00054 pkt->stream_index = 0;
00055 return ret;
00056 }
00057
00058 AVInputFormat ff_cdg_demuxer = {
00059 "cdg",
00060 NULL_IF_CONFIG_SMALL("CD Graphics Format"),
00061 0,
00062 NULL,
00063 read_header,
00064 read_packet,
00065 .extensions = "cdg"
00066 };