@ -26,13 +26,10 @@
# include "libavutil/intreadwrite.h"
# include "libavutil/intreadwrite.h"
# include "avformat.h"
# include "avformat.h"
# include "rawenc.h"
# define RAND_TAG MKBETAG('R','a','n','d')
# define RAND_TAG MKBETAG('R','a','n','d')
typedef struct FilmstripMuxContext {
int nb_frames ;
} FilmstripMuxContext ;
static int write_header ( AVFormatContext * s )
static int write_header ( AVFormatContext * s )
{
{
if ( s - > streams [ 0 ] - > codecpar - > format ! = AV_PIX_FMT_RGBA ) {
if ( s - > streams [ 0 ] - > codecpar - > format ! = AV_PIX_FMT_RGBA ) {
@ -42,23 +39,14 @@ static int write_header(AVFormatContext *s)
return 0 ;
return 0 ;
}
}
static int write_packet ( AVFormatContext * s , AVPacket * pkt )
{
FilmstripMuxContext * film = s - > priv_data ;
avio_write ( s - > pb , pkt - > data , pkt - > size ) ;
film - > nb_frames + + ;
return 0 ;
}
static int write_trailer ( AVFormatContext * s )
static int write_trailer ( AVFormatContext * s )
{
{
FilmstripMuxContext * film = s - > priv_data ;
AVIOContext * pb = s - > pb ;
AVIOContext * pb = s - > pb ;
AVStream * st = s - > streams [ 0 ] ;
AVStream * st = s - > streams [ 0 ] ;
int i ;
int i ;
avio_wb32 ( pb , RAND_TAG ) ;
avio_wb32 ( pb , RAND_TAG ) ;
avio_wb32 ( pb , film - > nb_frames ) ;
avio_wb32 ( pb , st - > nb_frames ) ;
avio_wb16 ( pb , 0 ) ; // packing method
avio_wb16 ( pb , 0 ) ; // packing method
avio_wb16 ( pb , 0 ) ; // reserved
avio_wb16 ( pb , 0 ) ; // reserved
avio_wb16 ( pb , st - > codecpar - > width ) ;
avio_wb16 ( pb , st - > codecpar - > width ) ;
@ -76,10 +64,9 @@ AVOutputFormat ff_filmstrip_muxer = {
. name = " filmstrip " ,
. name = " filmstrip " ,
. long_name = NULL_IF_CONFIG_SMALL ( " Adobe Filmstrip " ) ,
. long_name = NULL_IF_CONFIG_SMALL ( " Adobe Filmstrip " ) ,
. extensions = " flm " ,
. extensions = " flm " ,
. priv_data_size = sizeof ( FilmstripMuxContext ) ,
. audio_codec = AV_CODEC_ID_NONE ,
. audio_codec = AV_CODEC_ID_NONE ,
. video_codec = AV_CODEC_ID_RAWVIDEO ,
. video_codec = AV_CODEC_ID_RAWVIDEO ,
. write_header = write_header ,
. write_header = write_header ,
. write_packet = write_packet ,
. write_packet = ff_raw_ write_packet,
. write_trailer = write_trailer ,
. write_trailer = write_trailer ,
} ;
} ;