Statistics
| Branch: | Revision:

ffmpeg / libavformat / swf.h @ 9b92ed76

History | View | Annotate | Download (2.54 KB)

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 FFMPEG_SWF_H
24
#define FFMPEG_SWF_H
25

    
26
#include "libavutil/fifo.h"
27
#include "avformat.h"
28
#include "riff.h"    /* for CodecTag */
29

    
30
/* should have a generic way to indicate probable size */
31
#define DUMMY_FILE_SIZE   (100 * 1024 * 1024)
32
#define DUMMY_DURATION    600 /* in seconds */
33

    
34
#define TAG_END           0
35
#define TAG_SHOWFRAME     1
36
#define TAG_DEFINESHAPE   2
37
#define TAG_FREECHARACTER 3
38
#define TAG_PLACEOBJECT   4
39
#define TAG_REMOVEOBJECT  5
40
#define TAG_STREAMHEAD    18
41
#define TAG_STREAMBLOCK   19
42
#define TAG_JPEG2         21
43
#define TAG_PLACEOBJECT2  26
44
#define TAG_STREAMHEAD2   45
45
#define TAG_VIDEOSTREAM   60
46
#define TAG_VIDEOFRAME    61
47
#define TAG_FILEATTRIBUTES 69
48

    
49
#define TAG_LONG         0x100
50

    
51
/* flags for shape definition */
52
#define FLAG_MOVETO      0x01
53
#define FLAG_SETFILL0    0x02
54
#define FLAG_SETFILL1    0x04
55

    
56
#define AUDIO_FIFO_SIZE 65536
57

    
58
/* character id used */
59
#define BITMAP_ID 0
60
#define VIDEO_ID 0
61
#define SHAPE_ID  1
62

    
63
#undef NDEBUG
64
#include <assert.h>
65

    
66
typedef struct {
67
    int audio_stream_index;
68
    offset_t duration_pos;
69
    offset_t tag_pos;
70
    offset_t vframes_pos;
71
    int samples_per_frame;
72
    int sound_samples;
73
    int swf_frame_number;
74
    int video_frame_number;
75
    int frame_rate;
76
    int tag;
77
    AVFifoBuffer audio_fifo;
78
    AVCodecContext *audio_enc, *video_enc;
79
} SWFContext;
80

    
81
static const AVCodecTag swf_codec_tags[] = {
82
    {CODEC_ID_FLV1, 0x02},
83
    {CODEC_ID_VP6F, 0x04},
84
    {0, 0},
85
};
86

    
87
static const AVCodecTag swf_audio_codec_tags[] = {
88
    {CODEC_ID_PCM_S16LE,  0x00},
89
    {CODEC_ID_ADPCM_SWF,  0x01},
90
    {CODEC_ID_MP3,        0x02},
91
    {CODEC_ID_PCM_S16LE,  0x03},
92
  //{CODEC_ID_NELLYMOSER, 0x06},
93
    {0, 0},
94
};
95

    
96
#endif /* FFMPEG_SWF_H */