1/* 2 * Flash Compatible Streaming Format common header. 3 * Copyright (c) 2000 Fabrice Bellard 4 * Copyright (c) 2003 Tinic Uro 5 * 6 * This file is part of FFmpeg. 7 * 8 * FFmpeg is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU Lesser General Public 10 * License as published by the Free Software Foundation; either 11 * version 2.1 of the License, or (at your option) any later version. 12 * 13 * FFmpeg is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * Lesser General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public 19 * License along with FFmpeg; if not, write to the Free Software 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 21 */ 22 23#ifndef AVFORMAT_SWF_H 24#define AVFORMAT_SWF_H 25 26#include "libavutil/fifo.h" 27#include "avformat.h" 28#include "avio.h" 29#include "riff.h" /* for CodecTag */ 30 31/* should have a generic way to indicate probable size */ 32#define DUMMY_FILE_SIZE (100 * 1024 * 1024) 33#define DUMMY_DURATION 600 /* in seconds */ 34 35#define TAG_END 0 36#define TAG_SHOWFRAME 1 37#define TAG_DEFINESHAPE 2 38#define TAG_FREECHARACTER 3 39#define TAG_PLACEOBJECT 4 40#define TAG_REMOVEOBJECT 5 41#define TAG_STREAMHEAD 18 42#define TAG_STREAMBLOCK 19 43#define TAG_JPEG2 21 44#define TAG_PLACEOBJECT2 26 45#define TAG_STREAMHEAD2 45 46#define TAG_VIDEOSTREAM 60 47#define TAG_VIDEOFRAME 61 48#define TAG_FILEATTRIBUTES 69 49 50#define TAG_LONG 0x100 51 52/* flags for shape definition */ 53#define FLAG_MOVETO 0x01 54#define FLAG_SETFILL0 0x02 55#define FLAG_SETFILL1 0x04 56 57#define AUDIO_FIFO_SIZE 65536 58 59/* character id used */ 60#define BITMAP_ID 0 61#define VIDEO_ID 0 62#define SHAPE_ID 1 63 64#undef NDEBUG 65#include <assert.h> 66 67typedef struct { 68 int audio_stream_index; 69 int64_t duration_pos; 70 int64_t tag_pos; 71 int64_t vframes_pos; 72 int samples_per_frame; 73 int sound_samples; 74 int swf_frame_number; 75 int video_frame_number; 76 int frame_rate; 77 int tag; 78 AVFifoBuffer audio_fifo; 79 AVCodecContext *audio_enc, *video_enc; 80} SWFContext; 81 82static const AVCodecTag swf_codec_tags[] = { 83 {CODEC_ID_FLV1, 0x02}, 84 {CODEC_ID_VP6F, 0x04}, 85 {0, 0}, 86}; 87 88static const AVCodecTag swf_audio_codec_tags[] = { 89 {CODEC_ID_PCM_S16LE, 0x00}, 90 {CODEC_ID_ADPCM_SWF, 0x01}, 91 {CODEC_ID_MP3, 0x02}, 92 {CODEC_ID_PCM_S16LE, 0x03}, 93 //{CODEC_ID_NELLYMOSER, 0x06}, 94 {0, 0}, 95}; 96 97#endif /* AVFORMAT_SWF_H */ 98