yading@11: /* yading@11: * Flash Compatible Streaming Format common header. yading@11: * Copyright (c) 2000 Fabrice Bellard yading@11: * Copyright (c) 2003 Tinic Uro yading@11: * yading@11: * This file is part of FFmpeg. yading@11: * yading@11: * FFmpeg is free software; you can redistribute it and/or yading@11: * modify it under the terms of the GNU Lesser General Public yading@11: * License as published by the Free Software Foundation; either yading@11: * version 2.1 of the License, or (at your option) any later version. yading@11: * yading@11: * FFmpeg is distributed in the hope that it will be useful, yading@11: * but WITHOUT ANY WARRANTY; without even the implied warranty of yading@11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU yading@11: * Lesser General Public License for more details. yading@11: * yading@11: * You should have received a copy of the GNU Lesser General Public yading@11: * License along with FFmpeg; if not, write to the Free Software yading@11: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA yading@11: */ yading@11: yading@11: #ifndef AVFORMAT_SWF_H yading@11: #define AVFORMAT_SWF_H yading@11: yading@11: #include "config.h" yading@11: yading@11: #if CONFIG_ZLIB yading@11: #include yading@11: #endif yading@11: yading@11: #include "libavutil/fifo.h" yading@11: #include "avformat.h" yading@11: #include "avio.h" yading@11: #include "internal.h" yading@11: yading@11: /* should have a generic way to indicate probable size */ yading@11: #define DUMMY_FILE_SIZE (100 * 1024 * 1024) yading@11: #define DUMMY_DURATION 600 /* in seconds */ yading@11: yading@11: enum { yading@11: TAG_END = 0, yading@11: TAG_SHOWFRAME = 1, yading@11: TAG_DEFINESHAPE = 2, yading@11: TAG_FREECHARACTER = 3, yading@11: TAG_PLACEOBJECT = 4, yading@11: TAG_REMOVEOBJECT = 5, yading@11: TAG_DEFINEBITS = 6, yading@11: TAG_DEFINEBUTTON = 7, yading@11: TAG_JPEGTABLES = 8, yading@11: TAG_SETBACKGROUNDCOLOR = 9, yading@11: TAG_DEFINEFONT = 10, yading@11: TAG_DEFINETEXT = 11, yading@11: TAG_DOACTION = 12, yading@11: TAG_DEFINEFONTINFO = 13, yading@11: TAG_DEFINESOUND = 14, yading@11: TAG_STARTSOUND = 15, yading@11: TAG_DEFINEBUTTONSOUND = 17, yading@11: TAG_STREAMHEAD = 18, yading@11: TAG_STREAMBLOCK = 19, yading@11: TAG_DEFINEBITSLOSSLESS = 20, yading@11: TAG_JPEG2 = 21, yading@11: TAG_DEFINESHAPE2 = 22, yading@11: TAG_DEFINEBUTTONCXFORM = 23, yading@11: TAG_PROTECT = 24, yading@11: TAG_PLACEOBJECT2 = 26, yading@11: TAG_REMOVEOBJECT2 = 28, yading@11: TAG_DEFINESHAPE3 = 32, yading@11: TAG_DEFINETEXT2 = 33, yading@11: TAG_DEFINEBUTTON2 = 34, yading@11: TAG_DEFINEBITSJPEG3 = 35, yading@11: TAG_DEFINEBITSLOSSLESS2 = 36, yading@11: TAG_DEFINEEDITTEXT = 37, yading@11: TAG_DEFINESPRITE = 39, yading@11: TAG_FRAMELABEL = 43, yading@11: TAG_STREAMHEAD2 = 45, yading@11: TAG_DEFINEMORPHSHAPE = 46, yading@11: TAG_DEFINEFONT2 = 48, yading@11: TAG_EXPORTASSETS = 56, yading@11: TAG_IMPORTASSETS = 57, yading@11: TAG_ENABLEDEBUGGER = 58, yading@11: TAG_DOINITACTION = 59, yading@11: TAG_VIDEOSTREAM = 60, yading@11: TAG_VIDEOFRAME = 61, yading@11: TAG_DEFINEFONTINFO2 = 62, yading@11: TAG_ENABLEDEBUGGER2 = 64, yading@11: TAG_SCRIPTLIMITS = 65, yading@11: TAG_SETTABINDEX = 66, yading@11: TAG_FILEATTRIBUTES = 69, yading@11: TAG_PLACEOBJECT3 = 70, yading@11: TAG_IMPORTASSETS2 = 71, yading@11: TAG_DEFINEFONTALIGNZONES = 73, yading@11: TAG_CSMTEXTSETTINGS = 74, yading@11: TAG_DEFINEFONT3 = 75, yading@11: TAG_SYMBOLCLASS = 76, yading@11: TAG_METADATA = 77, yading@11: TAG_DEFINESCALINGGRID = 78, yading@11: TAG_DOABC = 82, yading@11: TAG_DEFINESHAPE4 = 83, yading@11: TAG_DEFINEMORPHSHAPE2 = 84, yading@11: TAG_DEFINESCENEANDFRAMELABELDATA = 86, yading@11: TAG_DEFINEBINARYDATA = 87, yading@11: TAG_DEFINEFONTNAME = 88, yading@11: TAG_STARTSOUND2 = 89, yading@11: TAG_DEFINEBITSJPEG4 = 90, yading@11: TAG_DEFINEFONT4 = 91, yading@11: }; yading@11: yading@11: #define TAG_LONG 0x100 yading@11: yading@11: /* flags for shape definition */ yading@11: #define FLAG_MOVETO 0x01 yading@11: #define FLAG_SETFILL0 0x02 yading@11: #define FLAG_SETFILL1 0x04 yading@11: yading@11: #define AUDIO_FIFO_SIZE 65536 yading@11: yading@11: /* character id used */ yading@11: #define BITMAP_ID 0 yading@11: #define VIDEO_ID 0 yading@11: #define SHAPE_ID 1 yading@11: yading@11: #undef NDEBUG yading@11: #include yading@11: yading@11: typedef struct SWFContext { yading@11: int64_t duration_pos; yading@11: int64_t tag_pos; yading@11: int64_t vframes_pos; yading@11: int samples_per_frame; yading@11: int sound_samples; yading@11: int swf_frame_number; yading@11: int video_frame_number; yading@11: int frame_rate; yading@11: int tag; yading@11: AVFifoBuffer *audio_fifo; yading@11: AVCodecContext *audio_enc, *video_enc; yading@11: #if CONFIG_ZLIB yading@11: AVIOContext *zpb; yading@11: #define ZBUF_SIZE 4096 yading@11: uint8_t *zbuf_in; yading@11: uint8_t *zbuf_out; yading@11: z_stream zstream; yading@11: #endif yading@11: } SWFContext; yading@11: yading@11: extern const AVCodecTag ff_swf_codec_tags[]; yading@11: yading@11: #endif /* AVFORMAT_SWF_H */