* commit 'bde2bba45c2f2df27a8534028bda09a6e7f835e2':
rtpenc: Restructure if statements in packetizers to simplify adding more conditions
Conflicts:
libavformat/rtpenc_xiph.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'f8c01257f93ceda3e03bc4e540a51022d1e2bff2':
rtpenc: Always do the default initialization regardless of codecs
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'd16c8d28d4e2fca3af1054ffbf635c8cee755fc8':
rtpenc_aac: Use AV_WB16 instead of manual bitshifts
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '9c9b0218e85fcd969308632f75af48a4ce229541':
rtpenc_aac: Merge a definition with a declaration
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '1fc64e2e07787bbca82a72c146588e850e6d098a':
rtpenc: Write conditional statements on separate lines
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '0662440b991361fdb5e732712d997a73e4692e34':
rtpenc_aac: Set a default value for max_frames_per_packet at init
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '12b3459979f5ea6481660cd2c99a0381e2b5ba37':
rtpenc_amr: Use s->num_frames instead of s->buf_ptr - s->buf
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'b9d2d6843a49f9df1d1ae1afe817d9b48c445919':
tls: Pass AVOptions dictionaries through to the chained protocol
Conflicts:
libavformat/tls.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'e14f98c62fdf8744b07419314095d1b3248cce75':
tcp: Clarify the units for the timeout avoptions
Conflicts:
libavformat/tcp.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Instead check the timestamps while muxing, to avoid buffering a
too long timestamp range into one single packet.
This makes the AMR and AAC packetization slightly less efficient,
since we set a possibly unnecessarily high max_frames_per_packet.
(These packetizers end up doing a memmove of the TOC bytes if
sending a packet before max_frames_per_packet is achieved, and
we end up setting max_frames_per_packet to a value that should
be high enough for most uses.)
All packetizers that use max_frames_per_packet now set it either
to a default value, or to a value calculated based on other
parameters, so none of them rely on the previous default setting.
For iLBC, copy one frame at a time, to allow checking the timestamp
range for each of them - basically doing potentially multiple
loops to simplify the code instead of trying to calculate the
number of frames to buffer while honoring s1->max_delay.
This is in preparation for reducing the coupling between libavformat
and libavcodec, by not having the muxers use the encoder field
frame_size (which may not be available during e.g. stream copy).
Signed-off-by: Martin Storsjö <martin@martin.st>
Factorize out the s->num_frames check at the start of the if statements,
simplifying adding more alternative causes for sending the buffered
frames.
Signed-off-by: Martin Storsjö <martin@martin.st>
This avoids having to jump to the defaultcase in the switch. Manually
override the stream time base back to 90 kHz for the few audio codecs
that don't use the sample rate as time base (mp2, mp3).
Signed-off-by: Martin Storsjö <martin@martin.st>
This doesn't fix any bug, but makes the code simpler for later
patches, and more straightforward to read as is.
Signed-off-by: Martin Storsjö <martin@martin.st>
After sending a fragmented frame, len (s->buf_ptr - s->buf) isn't
zero, while s->num_frames is zero as intended. Using s->num_frames
makes it work as intended, and is less convoluted than keeping track
of (resetting) s->buf_ptr.
This avoids sending stray data after sending a fragmented aac packet.
CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
Don't prefix them ffio_url, which is misleading, sounding too
much like the urlprotocol layer (like ffurl_*).
Signed-off-by: Martin Storsjö <martin@martin.st>
Other codecs/channel numbers are not supported by this muxer.
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Ohter packet sizes are not supported by this muxer.
This avoids a null pointer dereference of pkt->data.
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This avoids a null pointer dereference of pkt->data.
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
It is used in adx_read_packet, which currently depends on the decoder/parser setting this value between reading the file header and demuxing the first packet.
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This assumes CBR (which is true for all samples i have)
Previous version reviewed by: Oleksij Rempel <linux@rempel-privat.de>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Fixes out of array read
Fixes: asan_heap-oob_ae74b5_3610_cov_1739568095_test.3g2
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit '8e32b1f0963d01d4f5d4803eb721f162e0d58d9a':
libavformat: Use ffio_free_dyn_buf where applicable
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '8a273a746061a112e5e35066a8fd8e146d821a62':
avio: Add an internal utility function for freeing dynamic buffers
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '078d43e23a7a3d64aafee8a58b380d3e139b3020':
rtpdec: Free depacketizers if the init function failed
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'bb4a310bb85f43e62240145a656b1e5285b14239':
rtpdec: Don't free the payload context in the .free function
Conflicts:
libavformat/rtpdec_latm.c
libavformat/rtpdec_mpeg4.c
libavformat/rtpdec_mpegts.c
libavformat/rtpdec_xiph.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '78791c086bcaf9eb084c27555b31fea8bbb7624a':
rtpdec: Use .init instead of .alloc to set default values
Conflicts:
libavformat/rdt.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '3567b91e49c6ae101c9a35c90f46b8ad9890ac15':
rtpdec_hevc: Share the implementation of fragmented packets with h264
Conflicts:
libavformat/rtpdec_h264.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'f3449062a8d100ac4f703647336c32b126aa99f1':
rtpdec_hevc: Reduce indentation level by returning early on errors
Conflicts:
libavformat/rtpdec_hevc.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '8633fb47db2ec39eb8bd1bd65302af75a94ff5d0':
rtpdec_hevc: Share the implementation of parsing a=framesize with h264
Conflicts:
libavformat/rtpdec_h264.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '5956f489d0452ff6dea6b6b81b4fa8e596fc5684':
rtpdec_hevc: Add asterisks at the start of each long comment line
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '5d8cae45737bed6239bd6b6e0698802dbe1463c8':
rtpdec: Get rid of all trivial .alloc/.free functions
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'e72605f80bf5cbe32053a554ccc137e0a99cf3dd':
rtpdec: Allow allocating and freeing the private data without explicit functions
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'b7a4c319fda22aa91ce29692d728ec6103b514f6':
rtpdec: Allow setting the need_parsing field in RTPDynamicProtocolHandler
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'b651c9139e1ab222d5aab9151dcd7d6e40e49885':
rtpdec_mpa_robust: Move .enc_name to the start of the struct
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '353b492d0f2a21ae8eb829db1ac01b54b2a4d202':
rtpdec: Change enc_name to a pointer instead of a fixed-size buffer
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Many of these functions were named foo_free_context, and since
the functions no longer should free the context itself, only
allocated elements within it, the previous naming was slightly
misleading.
Signed-off-by: Martin Storsjö <martin@martin.st>
This is different from how it is handled in codecs/demuxers/muxers
though (where the close function isn't called if the open function
failed), but since the number of depacketizers that have an .init
function is quite limited, this is easy to change.
The main point is that if the init function failed, we shouldn't
try to use that depacketizer at all - this makes sure that the
parse function doesn't need to check for the things that were
initialized in the init function.
Signed-off-by: Martin Storsjö <martin@martin.st>
This makes it more consistent with depacketizers that don't have any
.free function at all, where the payload context is freed by the
surrounding framework. Always free the context in the surrounding
framework, having the individual depacketizers only free any data
they've specifically allocated themselves.
This is similar to how this works for demuxer/muxers/codecs - a
component shouldn't free the priv_data that the framework has
allocated for it.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit '74d318f138f2a3f1b2fe81aea826d80d1e60f54c':
rtsp: Fix the indentation of a linewrapped statement
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '26524e358147aade6e9dd18fff42d61b966bbc70':
rtsp: Interpret the text media type as AVMEDIA_TYPE_DATA
See: afb0e5a810
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Using the copy codec ACLR atoms where incorrectly written
During the creation of the ACLR atom we are assuming the vos_data
contains the DNxHD header. This change makes this explicit and
ensures we don't over write the stream with the extra_data.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
They share a great deal of common structure; only a few minor
bits in the headers differ.
This also fixes an off-by-one in sending of the last fragment
of large HEVC nals (where it previously sent len+2 bytes, even
if it should have been len+RTP_HEVC_HEADERS_SIZE aka len+3).
Signed-off-by: Martin Storsjö <martin@martin.st>
This allows getting rid of quite a bit of boilerplate in depacketizers.
The default value (initializing need_parsing to 0, aka
AVSTREAM_PARSE_NONE) is the same as it is initialized to by default
in AVStream.
Signed-off-by: Martin Storsjö <martin@martin.st>
Fixes the following link error:
nutdec.c:(.text+0x2d47): undefined reference to `ff_codec_movvideo_tags'
isom.c:(.text+0x332): undefined reference to `avpriv_mpeg4audio_get_config'
isom.c:(.text+0x39e): undefined reference to `avpriv_mpa_freq_tab'
* commit 'cdcc370293a159c321e41af7f0eef141c62d698d':
rtsp: punch holes again after pause
See: 22bb5bd7a3
Merged-by: Michael Niedermayer <michaelni@gmx.at>
When a client behind a NAT issues a pause command, and stay paused for a
long time, the router may stop the RTP/RTCP port redirection. Resend the
hole punching packets before each PLAY command to cause the router to
restart the port redirection in that case.
Move the existing code for sending the packets from the SETUP phase
to the PLAY phase.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit 'a388e72d1a6b0888cc1591cb699f61a9c1089cf4':
rtpenc_hevc: Aggregate multiple NAL units into one RTP packet, if possible
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'e2220e734f3d01145ef9aefbd7b6ff29a89ae159':
rtpenc_h264: Aggregate multiple NAL units into one RTP packet, if possible
Merged-by: Michael Niedermayer <michaelni@gmx.at>
When a client behind a NAT issues a pause command, and stay paused for a
long time, the router may stop the RTP/RTCP port redirection. Resend the
hole punching packets after each PLAY command to cause the router to
restart the port redirection in that case.
Signed-off-by: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'ff394ca087d41941d2157e7a4e356e3ad312494e':
rtpdec_h264: Add a missing closing paren in a log message
Merged-by: Michael Niedermayer <michaelni@gmx.at>
When receiving an RTCP packet, the difference between the last RTCP
timestamp and the base timestamp may be negative. As these timestamps
are of the uint32_t type, the result becomes a large integer. Cast
the difference to int32_t to avoid this issue.
The result of this issue is very large start times for RTSP
streams, and difficulty to restart correctly after a pause.
Signed-off-by: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
Signed-off-by: Martin Storsjö <martin@martin.st>
When receiving an RTCP packet, the difference between the last RTCP
timestamp and the base timestamp may be negative. As these timestamps
are of the uint32_t type, the result becomes a large integer. Cast
the difference to int32_t to avoid this issue.
The result of this issue is very large start times for RTSP
streams, and difficulty to restart correctly after a pause.
Signed-off-by: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit '10e2d8b5562d8729e4eefbcec63a11eb8a0c502c':
rtpdec_hevc: Use a shared function for parsing parameter sets
Merged-by: Michael Niedermayer <michaelni@gmx.at>
ffm encoder fails when codec is not found.
It may happen when stream is being copied.
This commit allows to store such stream and provides
backward compatibility with version prior 2.5 release.
fixes#4266
Signed-off-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
* commit '176903ce833ce7469f411640e9748a0d549b5285':
rtpdec_h264: Return immediately on errors in h264_handle_packet_stap_a
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '7650caf013f45ebebf128855735a0c6350836ea4':
rtpdec_h264: Use av_realloc instead of av_malloc+mempcy
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '8bdbf49c6f4d9473183a3c45ec70d611eb6183cd':
rtpdec_h264: Include the right header for AV_RB16
Merged-by: Michael Niedermayer <michaelni@gmx.at>
If src_len is too small for nal_size, we already print a warning
above, and the next step is to check the while loop condition
anyway, so this one serves no purpose.
Signed-off-by: Martin Storsjö <martin@martin.st>
Previously, errors were only logged but the code kept on trying,
and never actually returning the error as a return value.
Signed-off-by: Martin Storsjö <martin@martin.st>
Including libavcodec/get_bits.h is superfluous for AV_RB16 - nothing
in this file uses any actual bitstream reader.
Signed-off-by: Martin Storsjö <martin@martin.st>
This allows the output to be used with stream copy, which discards
packet from the start until the first keyframe.
Signed-off-by: Martin Storsjö <martin@martin.st>
Outputting DNxHD into .mov containers 'corrupts' following atoms until end of stsd
ffmpeg and qtdump could not decode pasp/colr atoms in the files made by ffmpeg,
when outputting DNxHD due to the incorrect padding placement. Now we add the
padding in the correct place
Tidy up FATE changes due to padding changes.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
On input ACLR will be used to set colour range no matter which codec
it is associated with.
No change for when it will be output.
Rework mov_read_extradata function to allow detection of truncated
atom reads by callers.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>