Re: [FFmpeg-soc] [Patch]GSoC 2008 qualification task TS Muxer
2008/3/25, Michael Niedermayer <michaelni@gmx.at>:
On Mon, Mar 24, 2008 at 11:09:12PM +0800, zhentan feng wrote:
hi all,
I have read through ISO13818 and the original TS Muxer codes by several days, and finally generated a patch attached below. I just extracted the common code lines from mpegtsenc.c and mpegenc.c, and added these codes to mpegpesenc.c and .h files. It may have some errors or unsuitable format although i have reviewed many times. Thanks anyone who points them out.
Further more, I have 2 questions: 1)How can I test my patch is correct? I just get 4 files through the link: svn://svn.mplayerhq.hu/soc/dvbmuxer. I download the ffmpeg source code from svn://svn.mplayerhq.hu/ffmpeg/trunk,but I can not find the 4files. Is it means that I should copy the 4 files to ffmpeg sourcer code and overwrite some files and rebuild the all source codes?
One of the 4 files is a patch which i assume can be applied, possibly to an old ffmpeg version.
thanks firstly.
[...]
Index: mpegenc.c =================================================================== --- mpegenc.c (revision 2027) +++ mpegenc.c (working copy) [...] Index: mpegpes.h =================================================================== --- mpegpes.h (revision 2027) +++ mpegpes.h (working copy) @@ -61,7 +61,51 @@ int64_t vobu_start_pts; } PESStream;
+/** + * PS stream structure + */ +typedef struct { + int packet_size; /* required packet size */ + int packet_number; + int pack_header_freq; /* frequency (in packets^-1) at which we send pack headers */ + int system_header_freq; + int system_header_size; + int mux_rate; /* bitrate in units of 50 bytes/s */ + /* stream info */ + int audio_bound; + int video_bound; + int is_mpeg2; + int is_vcd; + int is_svcd; + int is_dvd; + int64_t last_scr; /* current system clock */
+ double vcd_padding_bitrate; //FIXME floats + int64_t vcd_padding_bytes_written; + +} MpegMuxContext; + +/** + * TS stream structure + */ +typedef struct MpegTSWrite { + MpegTSSection pat; /* MPEG2 pat table */ + MpegTSSection sdt; /* MPEG2 sdt table context */ + MpegTSService **services; + int sdt_packet_count; + int sdt_packet_freq; + int pat_packet_count; + int pat_packet_freq; + int nb_services; + int onid; + int tsid; + int packet_number; + int64_t last_pcr; /* last programme clock reference */ + int64_t cur_pcr; /* current programme clock reference */ + int mux_rate; + int packet_size; +} MpegTSWrite;
These structs do not belong into the PES code
Also this patch is against soc-svn not ffmpeg-svn. We need one or more clean patches against ffmpeg-svn which move the common PES code into seperate files and makes both PS and TS muxers use this common code.
I modified the codes and attached 2 new patches. The patch names "TSMuxerPatch_svn_dev" is the 4 files against svn://svn.mplayerhq.hu/ffmpeg/trunk/libavformat I think if the patch works correctly, it would be our expect. The patch names "TSMuxerPatch_svn_soc" is the 4 files against svn://svn.mplayerhq.hu/soc/dvbmuxer I created the pactch just for reviewing the codes easily. thanks again,when anyone points mistakes out. best wishes~
[...]
-- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
While the State exists there can be no freedom; when there is freedom there will be no State. -- Vladimir Lenin
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFH6AbJYR7HhwQLD6sRAjLBAJ0SaU09FFv2omYQaHlSeFJ7zt0O4wCgidjL Og4KgSoYUgoO121sJaIPALA= =SzqG -----END PGP SIGNATURE-----
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@mplayerhq.hu https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-devel
-- Best wishes~
participants (1)
-
zhentan feng