- 23 Aug, 2019 4 commits
-
-
Marton Balint authored
The packet counting based approach caused excessive sdt/pat/pmt for VBR, so let's use a timestamp based approach instead similar to how we emit PCRs. SDT/PAT/PMT period should be consistent for both VBR and CBR from now on. Also change the type of sdt_period and pat_period to AV_OPT_TYPE_DURATION so no floating point math is necessary. Fixes ticket #3714. Signed-off-by: Marton Balint <cus@passwd.hu>
-
Marton Balint authored
PCR does not need to be recalcualted for CBR when inserting a NULL or PCR only packet. Signed-off-by: Marton Balint <cus@passwd.hu>
-
Marton Balint authored
Also document the algorithm for the default PCR interval. Fixes ticket #8061. Signed-off-by: Marton Balint <cus@passwd.hu>
-
Marton Balint authored
Signed-off-by: Marton Balint <cus@passwd.hu>
-
- 14 Aug, 2019 6 commits
-
-
Marton Balint authored
Deprecated since 2014. Signed-off-by: Marton Balint <cus@passwd.hu>
-
Marton Balint authored
PCR generation was based on counting packets for both CBR and VBR streams. Couting packets might have worked for CBR streams (when muxrate was specified) but it only took into account the packets of a service (or the packets of the PCR stream lately), so even that was problematic for multi program streams. The new code works on actual timestamps for both CBR and VBR streams. For VBR streams the behaviour of the old code is simulated by selecting a PCR interval which is the highest multiple of the frame duration but still less than 100 ms. It should be trivial to add support for setting the PCR interval for VBR streams as well in a later patch. The accuracy of PCR packets for CBR streams was greatly improved by preemtively sending them at PCR intervals even if sending the payload of another stream is in progress. This may fix these tickets: - #5750 - #7524 Signed-off-by: Marton Balint <cus@passwd.hu>
-
Marton Balint authored
Maybe we should use service ID instead of increasing numbers? Signed-off-by: Marton Balint <cus@passwd.hu>
-
Marton Balint authored
Signed-off-by: Marton Balint <cus@passwd.hu>
-
Marton Balint authored
Signed-off-by: Marton Balint <cus@passwd.hu>
-
Marton Balint authored
The MPEG-TS muxer had a serious bug related to the use of multiple programs: in that case, the PCR pid selection was incomplete for all services except one. This patch solves this problem and selects a stream to become PCR for each service, preferably the video stream. This patch also moves pcr calculation attributes to MpegTSWriteStream from MpegTSService. PCR is a per-stream and not per-service thing, so it was misleading to refer to it as something that is per-service. Also remove *service from MpegTSWriteStream because a stream can belong to multiple services so it was misleading to select one for each stream. You can check the result with this example command: ./ffmpeg -loglevel verbose -y -f lavfi -i \ "testsrc=s=64x64:d=10,split=2[out0][tmp1];[tmp1]vflip[out1];sine=d=10,asetnsamples=1152[out2]" \ -flags +bitexact -fflags +bitexact -sws_flags +accurate_rnd+bitexact \ -codec:v libx264 -codec:a mp2 -pix_fmt yuv420p \ -map '0:v:0' \ -map '0:v:1' \ -map '0:a:0' \ -program st=0:st=2 -program st=1:st=2 -program st=2 -program st=0 -f mpegts out.ts You should now see this: [mpegts @ 0x37505c0] service 1 using PCR in pid=256 [mpegts @ 0x37505c0] service 2 using PCR in pid=257 [mpegts @ 0x37505c0] service 3 using PCR in pid=258 [mpegts @ 0x37505c0] service 4 using PCR in pid=256 Fixes ticket #8039. v2: a video is stream is preferred if there are no programs, just like before the patch. Signed-off-by: Marton Balint <cus@passwd.hu>
-
- 01 Mar, 2019 2 commits
-
-
Marton Balint authored
This improves compatibility with some consumer (LG WebOS) TVs which apparently search a HEVC descriptor (which our mpegts muxer can't generate) or a format identifier. Since the HEVC format identifier is not registered (but used in the wild), it is not written if strict_std_compliance is higher than normal. This fixes the issue in ticket #7744. Signed-off-by: Marton Balint <cus@passwd.hu>
-
Marton Balint authored
Signed-off-by: Marton Balint <cus@passwd.hu>
-
- 21 Feb, 2019 1 commit
-
-
Marton Balint authored
Signed-off-by: Marton Balint <cus@passwd.hu>
-
- 08 Dec, 2018 1 commit
-
-
Artyom Lebedev authored
Fixes ticket #7597. Signed-off-by: Peter Ross <pross@xvid.org>
-
- 12 May, 2018 1 commit
-
-
Aman Gupta authored
This allows remuxing streams from one mpegts container to another, without requiring avformat_find_stream_info() (or using `ffmpeg -probesize 32` on the cli). Signed-off-by: Aman Gupta <aman@tmm1.net> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-
- 28 Jan, 2018 1 commit
-
-
Marton Balint authored
Signed-off-by: Marton Balint <cus@passwd.hu>
-
- 07 Jul, 2017 1 commit
-
-
Derek Buitenhuis authored
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
-
- 29 Mar, 2017 1 commit
-
-
Clément Bœsch authored
-
- 16 Mar, 2017 1 commit
-
-
Lou Logan authored
pcr_period is in milliseconds. Signed-off-by: Lou Logan <lou@lrcd.com>
-
- 17 Jan, 2017 1 commit
-
-
Michael Niedermayer authored
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-
- 06 Nov, 2016 2 commits
-
-
Stefano Sabatini authored
This is required since some programs are not able to correctly recognize the metadata. See H.222, 2.6.58 Metadata pointer descriptor. putstr8() is modified in order to allow to skip writing the string length.
-
Stefano Sabatini authored
This allows to use the function in a future commit.
-
- 02 Nov, 2016 1 commit
-
-
Michael Niedermayer authored
This avoids continuity check failures in concatenated streams Reviewed-by: Steven Liu <lingjiujianke@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-
- 28 Oct, 2016 1 commit
-
-
Diego Biurrun authored
-
- 04 Oct, 2016 1 commit
-
-
Rodger Combs authored
-
- 28 Sep, 2016 1 commit
-
-
Sylvain Laurent authored
Fixes ticket #1673.
-
- 29 Jul, 2016 1 commit
-
-
Stefano Sabatini authored
Set the stream_id to 0xbd (private_stream_id_1). Tools seem to assume that value, and this is consistent with MPEG TS specification (ITU-T H.222.0 section 2.12.3).
-
- 19 May, 2016 1 commit
-
-
Stefano Sabatini authored
This allow to remux data packets which are then recognized as ID3 packets.
-
- 17 May, 2016 1 commit
-
-
Francois Cartegnie authored
Unless specified, users must use non registered range for network id Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
-
- 04 May, 2016 2 commits
-
-
James Almer authored
Signed-off-by: James Almer <jamrial@gmail.com>
-
Vittorio Giovara authored
Signed-off-by: Diego Biurrun <diego@biurrun.de>
-
- 03 May, 2016 2 commits
-
-
smallishzulu authored
Fixes ticket #5455.
-
Carl Eugen Hoyos authored
-
- 24 Mar, 2016 2 commits
-
-
Michael Niedermayer authored
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-
Michael Niedermayer authored
Simplifies code Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-
- 23 Feb, 2016 2 commits
-
-
Stefano Sabatini authored
This allows to copy information related to the stream ID from the demuxer to the muxer, thus allowing for example to retain information related to synchronous and asynchronous KLV data packets. This information is used in the muxer when remuxing to distinguish the two kind of packets (if the information is lacking, data packets are considered synchronous). The fate reference changes are due to the use of av_packet_merge_side_data(), which increases the size of the output packet size, since side data is merged into the packet data.
-
Anton Khirnov authored
Currently, AVStream contains an embedded AVCodecContext instance, which is used by demuxers to export stream parameters to the caller and by muxers to receive stream parameters from the caller. It is also used internally as the codec context that is passed to parsers. In addition, it is also widely used by the callers as the decoding (when demuxer) or encoding (when muxing) context, though this has been officially discouraged since Libav 11. There are multiple important problems with this approach: - the fields in AVCodecContext are in general one of * stream parameters * codec options * codec state However, it's not clear which ones are which. It is consequently unclear which fields are a demuxer allowed to set or a muxer allowed to read. This leads to erratic behaviour depending on whether decoding or encoding is being performed or not (and whether it uses the AVStream embedded codec context). - various synchronization issues arising from the fact that the same context is used by several different APIs (muxers/demuxers, parsers, bitstream filters and encoders/decoders) simultaneously, with there being no clear rules for who can modify what and the different processes being typically delayed with respect to each other. - avformat_find_stream_info() making it necessary to support opening and closing a single codec context multiple times, thus complicating the semantics of freeing various allocated objects in the codec context. Those problems are resolved by replacing the AVStream embedded codec context with a newly added AVCodecParameters instance, which stores only the stream parameters exported by the demuxers or read by the muxers.
-
- 29 Jan, 2016 1 commit
-
-
Hagen Schmidt authored
Fixes ticket 279. Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-
- 25 Jan, 2016 1 commit
-
-
Vittorio Gambaletta (VittGam) authored
avformat/mpegtsenc: Fix multi program so that it supports adding the same stream to multiple programs. Signed-off-by: Vittorio Gambaletta <ffmpeg-dev@vittgam.net> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-
- 28 Dec, 2015 1 commit
-
-
Rodger Combs authored
-