|
|
|
@ -23,15 +23,15 @@ |
|
|
|
|
#include "avformat.h" |
|
|
|
|
#include "avio_internal.h" |
|
|
|
|
|
|
|
|
|
struct MuxChain { |
|
|
|
|
typedef struct MuxChain { |
|
|
|
|
AVFormatContext *mpegts_ctx; |
|
|
|
|
AVFormatContext *rtp_ctx; |
|
|
|
|
AVPacket *pkt; |
|
|
|
|
}; |
|
|
|
|
} MuxChain; |
|
|
|
|
|
|
|
|
|
static int rtp_mpegts_write_close(AVFormatContext *s) |
|
|
|
|
{ |
|
|
|
|
struct MuxChain *chain = s->priv_data; |
|
|
|
|
MuxChain *chain = s->priv_data; |
|
|
|
|
|
|
|
|
|
if (chain->mpegts_ctx) { |
|
|
|
|
av_write_trailer(chain->mpegts_ctx); |
|
|
|
@ -50,7 +50,7 @@ static int rtp_mpegts_write_close(AVFormatContext *s) |
|
|
|
|
|
|
|
|
|
static int rtp_mpegts_write_header(AVFormatContext *s) |
|
|
|
|
{ |
|
|
|
|
struct MuxChain *chain = s->priv_data; |
|
|
|
|
MuxChain *chain = s->priv_data; |
|
|
|
|
AVFormatContext *mpegts_ctx = NULL, *rtp_ctx = NULL; |
|
|
|
|
ff_const59 AVOutputFormat *mpegts_format = av_guess_format("mpegts", NULL, NULL); |
|
|
|
|
ff_const59 AVOutputFormat *rtp_format = av_guess_format("rtp", NULL, NULL); |
|
|
|
@ -120,7 +120,7 @@ fail: |
|
|
|
|
|
|
|
|
|
static int rtp_mpegts_write_packet(AVFormatContext *s, AVPacket *pkt) |
|
|
|
|
{ |
|
|
|
|
struct MuxChain *chain = s->priv_data; |
|
|
|
|
MuxChain *chain = s->priv_data; |
|
|
|
|
int ret = 0, size; |
|
|
|
|
uint8_t *buf; |
|
|
|
|
AVPacket *local_pkt = chain->pkt; |
|
|
|
@ -158,7 +158,7 @@ static int rtp_mpegts_write_packet(AVFormatContext *s, AVPacket *pkt) |
|
|
|
|
AVOutputFormat ff_rtp_mpegts_muxer = { |
|
|
|
|
.name = "rtp_mpegts", |
|
|
|
|
.long_name = NULL_IF_CONFIG_SMALL("RTP/mpegts output format"), |
|
|
|
|
.priv_data_size = sizeof(struct MuxChain), |
|
|
|
|
.priv_data_size = sizeof(MuxChain), |
|
|
|
|
.audio_codec = AV_CODEC_ID_AAC, |
|
|
|
|
.video_codec = AV_CODEC_ID_MPEG4, |
|
|
|
|
.write_header = rtp_mpegts_write_header, |
|
|
|
|