summaryrefslogtreecommitdiff
path: root/libavformat/swf.h
diff options
context:
space:
mode:
authorBaptiste Coudurier <baptiste.coudurier@gmail.com>2008-05-20 23:31:10 +0000
committerBaptiste Coudurier <baptiste.coudurier@gmail.com>2008-05-20 23:31:10 +0000
commit3b35f4ab51b8b720491ff5c9b4e86e2de8ebce07 (patch)
treedb814e279157c8933bdac6bea24877c8bf610bb3 /libavformat/swf.h
parent585dac65dba487b764fe136640da3e7573f75151 (diff)
split swf de/muxer
Originally committed as revision 13203 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/swf.h')
-rw-r--r--libavformat/swf.h99
1 files changed, 99 insertions, 0 deletions
diff --git a/libavformat/swf.h b/libavformat/swf.h
new file mode 100644
index 0000000000..1b9b7fff35
--- /dev/null
+++ b/libavformat/swf.h
@@ -0,0 +1,99 @@
+/*
+ * Flash Compatible Streaming Format common header.
+ * Copyright (c) 2000 Fabrice Bellard.
+ * Copyright (c) 2003 Tinic Uro.
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef FFMPEG_SWF_H
+#define FFMPEG_SWF_H
+
+#include "avformat.h"
+#include "riff.h" /* for CodecTag */
+
+/* should have a generic way to indicate probable size */
+#define DUMMY_FILE_SIZE (100 * 1024 * 1024)
+#define DUMMY_DURATION 600 /* in seconds */
+
+#define TAG_END 0
+#define TAG_SHOWFRAME 1
+#define TAG_DEFINESHAPE 2
+#define TAG_FREECHARACTER 3
+#define TAG_PLACEOBJECT 4
+#define TAG_REMOVEOBJECT 5
+#define TAG_STREAMHEAD 18
+#define TAG_STREAMBLOCK 19
+#define TAG_JPEG2 21
+#define TAG_PLACEOBJECT2 26
+#define TAG_STREAMHEAD2 45
+#define TAG_VIDEOSTREAM 60
+#define TAG_VIDEOFRAME 61
+#define TAG_FILEATTRIBUTES 69
+
+#define TAG_LONG 0x100
+
+/* flags for shape definition */
+#define FLAG_MOVETO 0x01
+#define FLAG_SETFILL0 0x02
+#define FLAG_SETFILL1 0x04
+
+#define AUDIO_FIFO_SIZE 65536
+
+/* character id used */
+#define BITMAP_ID 0
+#define VIDEO_ID 0
+#define SHAPE_ID 1
+
+#undef NDEBUG
+#include <assert.h>
+
+typedef struct {
+ int audio_stream_index;
+ offset_t duration_pos;
+ offset_t tag_pos;
+
+ int samples_per_frame;
+ int sound_samples;
+ int swf_frame_number;
+ int video_frame_number;
+ int frame_rate;
+ int tag;
+
+ uint8_t audio_fifo[AUDIO_FIFO_SIZE];
+ int audio_in_pos;
+
+ int video_type;
+ int audio_type;
+} SWFContext;
+
+static const AVCodecTag swf_codec_tags[] = {
+ {CODEC_ID_FLV1, 0x02},
+ {CODEC_ID_VP6F, 0x04},
+ {0, 0},
+};
+
+static const AVCodecTag swf_audio_codec_tags[] = {
+ {CODEC_ID_PCM_S16LE, 0x00},
+ {CODEC_ID_ADPCM_SWF, 0x01},
+ {CODEC_ID_MP3, 0x02},
+ {CODEC_ID_PCM_S16LE, 0x03},
+ //{CODEC_ID_NELLYMOSER, 0x06},
+ {0, 0},
+};
+
+#endif /* FFMPEG_SWF_H */