Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-09-20 14:21:28 +0300
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-09-20 19:34:48 +0300
commit913aa4204a2a2e0f3588f628441bf8d6edc12db7 (patch)
treea4dc1c28b3b1d1a20cc731d7cf78ea0819d5fbab /libavformat/swfenc.c
parentbc0e776c9aaf06f437bf21e05a713fd54dc85400 (diff)
avformat/swf: Separate mux and demux contexts
There was almost no overlap between them: The only field used by both was an int named samples_per_frame. Therefore this commit separates them. Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavformat/swfenc.c')
-rw-r--r--libavformat/swfenc.c35
1 files changed, 26 insertions, 9 deletions
diff --git a/libavformat/swfenc.c b/libavformat/swfenc.c
index 750ec56ec1..14be2b72aa 100644
--- a/libavformat/swfenc.c
+++ b/libavformat/swfenc.c
@@ -22,12 +22,29 @@
#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);
@@ -43,7 +60,7 @@ static void put_swf_tag(AVFormatContext *s, int tag)
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;
@@ -173,7 +190,7 @@ static void put_swf_matrix(AVIOContext *pb,
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];
@@ -343,7 +360,7 @@ static int swf_write_header(AVFormatContext *s)
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 */
@@ -448,7 +465,7 @@ static int swf_write_video(AVFormatContext *s,
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)
@@ -480,7 +497,7 @@ static int swf_write_packet(AVFormatContext *s, AVPacket *pkt)
static int swf_write_trailer(AVFormatContext *s)
{
- SWFContext *swf = s->priv_data;
+ SWFEncContext *swf = s->priv_data;
AVIOContext *pb = s->pb;
int file_size;
@@ -505,7 +522,7 @@ static int swf_write_trailer(AVFormatContext *s)
static void swf_deinit(AVFormatContext *s)
{
- SWFContext *swf = s->priv_data;
+ SWFEncContext *swf = s->priv_data;
av_fifo_freep(&swf->audio_fifo);
}
@@ -516,7 +533,7 @@ AVOutputFormat ff_swf_muxer = {
.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,
@@ -531,7 +548,7 @@ AVOutputFormat ff_avm2_muxer = {
.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,