#ifndef AVFORMAT_SWF_H
#define AVFORMAT_SWF_H
-#include "config.h"
-
-#if CONFIG_ZLIB
-#include <zlib.h>
-#endif
-
-#include "libavutil/fifo.h"
-#include "avformat.h"
-#include "avio.h"
#include "internal.h"
/* should have a generic way to indicate probable size */
#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
-typedef struct SWFContext {
- int64_t duration_pos;
- int64_t tag_pos;
- int64_t vframes_pos;
- int samples_per_frame;
- int sound_samples;
- int swf_frame_number;
- int video_frame_number;
- int frame_rate;
- int tag;
- AVFifoBuffer *audio_fifo;
- AVCodecParameters *audio_par, *video_par;
- AVStream *video_st;
-#if CONFIG_ZLIB
-#define ZBUF_SIZE 4096
- AVIOContext *zpb;
- uint8_t *zbuf_in;
- uint8_t *zbuf_out;
- z_stream zstream;
-#endif
-} SWFContext;
-
extern const AVCodecTag ff_swf_codec_tags[];
#endif /* AVFORMAT_SWF_H */
#include "libavcodec/get_bits.h"
#include "swf.h"
+typedef struct SWFDecContext {
+ int samples_per_frame;
+ int frame_rate;
+#if CONFIG_ZLIB
+#define ZBUF_SIZE 4096
+ AVIOContext *zpb;
+ uint8_t *zbuf_in;
+ uint8_t *zbuf_out;
+ z_stream zstream;
+#endif
+} SWFDecContext;
+
static const AVCodecTag swf_audio_codec_tags[] = {
{ AV_CODEC_ID_PCM_S16LE, 0x00 },
{ AV_CODEC_ID_ADPCM_SWF, 0x01 },
static int zlib_refill(void *opaque, uint8_t *buf, int buf_size)
{
AVFormatContext *s = opaque;
- SWFContext *swf = s->priv_data;
+ SWFDecContext *swf = s->priv_data;
z_stream *z = &swf->zstream;
int ret;
static int swf_read_header(AVFormatContext *s)
{
- SWFContext *swf = s->priv_data;
+ SWFDecContext *swf = s->priv_data;
AVIOContext *pb = s->pb;
int nbits, len, tag;
static int swf_read_packet(AVFormatContext *s, AVPacket *pkt)
{
- SWFContext *swf = s->priv_data;
+ SWFDecContext *swf = s->priv_data;
AVIOContext *pb = s->pb;
AVStream *vst = NULL, *ast = NULL, *st = 0;
int tag, len, i, frame, v, res;
#if CONFIG_ZLIB
static av_cold int swf_read_close(AVFormatContext *avctx)
{
- SWFContext *s = avctx->priv_data;
+ SWFDecContext *s = avctx->priv_data;
inflateEnd(&s->zstream);
av_freep(&s->zbuf_in);
av_freep(&s->zbuf_out);
AVInputFormat ff_swf_demuxer = {
.name = "swf",
.long_name = NULL_IF_CONFIG_SMALL("SWF (ShockWave Flash)"),
- .priv_data_size = sizeof(SWFContext),
+ .priv_data_size = sizeof(SWFDecContext),
.read_probe = swf_probe,
.read_header = swf_read_header,
.read_packet = swf_read_packet,
#include "libavcodec/put_bits.h"
#include "libavutil/avassert.h"
+#include "libavutil/fifo.h"
#include "avformat.h"
#include "swf.h"
+#define AUDIO_FIFO_SIZE 65536
+
+typedef struct SWFEncContext {
+ int64_t duration_pos;
+ int64_t tag_pos;
+ int64_t vframes_pos;
+ int samples_per_frame;
+ int sound_samples;
+ int swf_frame_number;
+ int video_frame_number;
+ int tag;
+ AVFifoBuffer *audio_fifo;
+ AVCodecParameters *audio_par, *video_par;
+ AVStream *video_st;
+} SWFEncContext;
+
static void put_swf_tag(AVFormatContext *s, int tag)
{
- SWFContext *swf = s->priv_data;
+ SWFEncContext *swf = s->priv_data;
AVIOContext *pb = s->pb;
swf->tag_pos = avio_tell(pb);
static void put_swf_end_tag(AVFormatContext *s)
{
- SWFContext *swf = s->priv_data;
+ SWFEncContext *swf = s->priv_data;
AVIOContext *pb = s->pb;
int64_t pos;
int tag_len, tag;
static int swf_write_header(AVFormatContext *s)
{
- SWFContext *swf = s->priv_data;
+ SWFEncContext *swf = s->priv_data;
AVIOContext *pb = s->pb;
PutBitContext p;
uint8_t buf1[256];
static int swf_write_video(AVFormatContext *s,
AVCodecParameters *par, const uint8_t *buf, int size)
{
- SWFContext *swf = s->priv_data;
+ SWFEncContext *swf = s->priv_data;
AVIOContext *pb = s->pb;
/* Flash Player limit */
static int swf_write_audio(AVFormatContext *s,
AVCodecParameters *par, uint8_t *buf, int size)
{
- SWFContext *swf = s->priv_data;
+ SWFEncContext *swf = s->priv_data;
/* Flash Player limit */
if (swf->swf_frame_number == 16000)
static int swf_write_trailer(AVFormatContext *s)
{
- SWFContext *swf = s->priv_data;
+ SWFEncContext *swf = s->priv_data;
AVIOContext *pb = s->pb;
int file_size;
static void swf_deinit(AVFormatContext *s)
{
- SWFContext *swf = s->priv_data;
+ SWFEncContext *swf = s->priv_data;
av_fifo_freep(&swf->audio_fifo);
}
.long_name = NULL_IF_CONFIG_SMALL("SWF (ShockWave Flash)"),
.mime_type = "application/x-shockwave-flash",
.extensions = "swf",
- .priv_data_size = sizeof(SWFContext),
+ .priv_data_size = sizeof(SWFEncContext),
.audio_codec = AV_CODEC_ID_MP3,
.video_codec = AV_CODEC_ID_FLV1,
.write_header = swf_write_header,
.name = "avm2",
.long_name = NULL_IF_CONFIG_SMALL("SWF (ShockWave Flash) (AVM2)"),
.mime_type = "application/x-shockwave-flash",
- .priv_data_size = sizeof(SWFContext),
+ .priv_data_size = sizeof(SWFEncContext),
.audio_codec = AV_CODEC_ID_MP3,
.video_codec = AV_CODEC_ID_FLV1,
.write_header = swf_write_header,