00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef AVFORMAT_SWF_H
00024 #define AVFORMAT_SWF_H
00025
00026 #include "config.h"
00027
00028 #if CONFIG_ZLIB
00029 #include <zlib.h>
00030 #endif
00031
00032 #include "libavutil/fifo.h"
00033 #include "avformat.h"
00034 #include "avio.h"
00035 #include "internal.h"
00036
00037
00038 #define DUMMY_FILE_SIZE (100 * 1024 * 1024)
00039 #define DUMMY_DURATION 600
00040
00041 enum {
00042 TAG_END = 0,
00043 TAG_SHOWFRAME = 1,
00044 TAG_DEFINESHAPE = 2,
00045 TAG_FREECHARACTER = 3,
00046 TAG_PLACEOBJECT = 4,
00047 TAG_REMOVEOBJECT = 5,
00048 TAG_DEFINEBITS = 6,
00049 TAG_DEFINEBUTTON = 7,
00050 TAG_JPEGTABLES = 8,
00051 TAG_SETBACKGROUNDCOLOR = 9,
00052 TAG_DEFINEFONT = 10,
00053 TAG_DEFINETEXT = 11,
00054 TAG_DOACTION = 12,
00055 TAG_DEFINEFONTINFO = 13,
00056 TAG_DEFINESOUND = 14,
00057 TAG_STARTSOUND = 15,
00058 TAG_DEFINEBUTTONSOUND = 17,
00059 TAG_STREAMHEAD = 18,
00060 TAG_STREAMBLOCK = 19,
00061 TAG_DEFINEBITSLOSSLESS = 20,
00062 TAG_JPEG2 = 21,
00063 TAG_DEFINESHAPE2 = 22,
00064 TAG_DEFINEBUTTONCXFORM = 23,
00065 TAG_PROTECT = 24,
00066 TAG_PLACEOBJECT2 = 26,
00067 TAG_REMOVEOBJECT2 = 28,
00068 TAG_DEFINESHAPE3 = 32,
00069 TAG_DEFINETEXT2 = 33,
00070 TAG_DEFINEBUTTON2 = 34,
00071 TAG_DEFINEBITSJPEG3 = 35,
00072 TAG_DEFINEBITSLOSSLESS2 = 36,
00073 TAG_DEFINEEDITTEXT = 37,
00074 TAG_DEFINESPRITE = 39,
00075 TAG_FRAMELABEL = 43,
00076 TAG_STREAMHEAD2 = 45,
00077 TAG_DEFINEMORPHSHAPE = 46,
00078 TAG_DEFINEFONT2 = 48,
00079 TAG_EXPORTASSETS = 56,
00080 TAG_IMPORTASSETS = 57,
00081 TAG_ENABLEDEBUGGER = 58,
00082 TAG_DOINITACTION = 59,
00083 TAG_VIDEOSTREAM = 60,
00084 TAG_VIDEOFRAME = 61,
00085 TAG_DEFINEFONTINFO2 = 62,
00086 TAG_ENABLEDEBUGGER2 = 64,
00087 TAG_SCRIPTLIMITS = 65,
00088 TAG_SETTABINDEX = 66,
00089 TAG_FILEATTRIBUTES = 69,
00090 TAG_PLACEOBJECT3 = 70,
00091 TAG_IMPORTASSETS2 = 71,
00092 TAG_DEFINEFONTALIGNZONES = 73,
00093 TAG_CSMTEXTSETTINGS = 74,
00094 TAG_DEFINEFONT3 = 75,
00095 TAG_SYMBOLCLASS = 76,
00096 TAG_METADATA = 77,
00097 TAG_DEFINESCALINGGRID = 78,
00098 TAG_DOABC = 82,
00099 TAG_DEFINESHAPE4 = 83,
00100 TAG_DEFINEMORPHSHAPE2 = 84,
00101 TAG_DEFINESCENEANDFRAMELABELDATA = 86,
00102 TAG_DEFINEBINARYDATA = 87,
00103 TAG_DEFINEFONTNAME = 88,
00104 TAG_STARTSOUND2 = 89,
00105 TAG_DEFINEBITSJPEG4 = 90,
00106 TAG_DEFINEFONT4 = 91,
00107 };
00108
00109 #define TAG_LONG 0x100
00110
00111
00112 #define FLAG_MOVETO 0x01
00113 #define FLAG_SETFILL0 0x02
00114 #define FLAG_SETFILL1 0x04
00115
00116 #define AUDIO_FIFO_SIZE 65536
00117
00118
00119 #define BITMAP_ID 0
00120 #define VIDEO_ID 0
00121 #define SHAPE_ID 1
00122
00123 #undef NDEBUG
00124 #include <assert.h>
00125
00126 typedef struct SWFContext {
00127 int64_t duration_pos;
00128 int64_t tag_pos;
00129 int64_t vframes_pos;
00130 int samples_per_frame;
00131 int sound_samples;
00132 int swf_frame_number;
00133 int video_frame_number;
00134 int frame_rate;
00135 int tag;
00136 AVFifoBuffer *audio_fifo;
00137 AVCodecContext *audio_enc, *video_enc;
00138 #if CONFIG_ZLIB
00139 AVIOContext *zpb;
00140 #define ZBUF_SIZE 4096
00141 uint8_t *zbuf_in;
00142 uint8_t *zbuf_out;
00143 z_stream zstream;
00144 #endif
00145 } SWFContext;
00146
00147 extern const AVCodecTag ff_swf_codec_tags[];
00148
00149 #endif