Fix a change that was broken by [1]. Cues must be added for audio frames
on cluster start for WebM when the DASH flag is passed. Restoring
correct functionality.
[1] http://goo.gl/xYLq7Z
Signed-off-by: Vignesh Venkatasubramanian <vigneshv@google.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
On big endian machines, the default value set via the faulty
AVOption ended up as 2^32 times too big.
This fixes the fate-lavf-ogg test which currently is broken on
big endian machines, broken since 3831362. Since that commit,
a final zero-sized packet is written to the ogg muxer in that test,
which caused different flushing behaviour on little and big endian
depending on whether the pref_duration option was handled as it
should or not.
CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
The '?xyz' form is used by android devices (and according to apple
mailing list archives, also by older iOS devices). The 'loci' field
(defined in 3GPP 26.244) is used by recent iOS devices.
Even though the loci field can contain an altitude, it was plain
0 in my sample. Just export longitude and latitude, in a string
format matching the one used by the '?xyz' metadata field.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit '95b7fa1729b93bbb3f4fb85a5c0cb53cf970c3c7':
oggenc: Support flushing the muxer
Conflicts:
libavformat/version.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This allows the caller to write all buffered data to disk, allowing
the caller to know at what byte position in the file a certain
packet starts (any packet written after the flush will be located
after that byte position).
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit '59cb5747ec3c5cd842b94e574c37889521c97cc4':
rtmpproto: read metadata to set correct FLV header
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '3b18857ab301d2a0b3e86e9d85eed76f0798a29c':
rtmppkt: Add method to read an AMF string that is not prefixed by its type
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'a1859032e39d96352687186fd179e1559dea2aca':
flvdec: Do not default to a video and audio stream
Merged-by: Michael Niedermayer <michaelni@gmx.at>
In the presence of no metadata, do not set any stream flag in the FLV
header but let the demuxer handle the detection and creation of streams
as data arrives.
Signed-off-by: Martin Storsjö <martin@martin.st>
If no streams were indicated in the FLV header, do not automatically
allocate by default a video and an audio stream. Instead, in the case
that the header did not indicate the presence of any data, allocate no
stream until data actually arrives for one type.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit 'e19d48dfce52f1417f7f06143b96fed00cbcdc52':
flac muxer: support reading updated extradata from side data
Conflicts:
libavformat/flacenc.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'd2ef708c95ace2518deffe830a9c439aeb9edd5d':
matroskaenc: Allow VP9 and Opus in webm
Conflicts:
libavformat/matroskaenc.c
See: 820ffaed0f
Merged-by: Michael Niedermayer <michaelni@gmx.at>
The other format (full flac header blocks) should not be exported by any
demuxers anymore.
This allows to drop an avpriv_ function and also simplify the following
commits.
* commit 'f797b134cad4d248b1c8955659997980d0668bc3':
rtpenc_chain: Don't copy the time base to the source stream by default
See: 1fe40e1b05
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Only copy it manually in the muxers where it makes sense (rtspenc,
sapenc). Don't touch the original AVStream in movenchint, where
the original AVStream should be kept untouched.
This fixes the normal tracks in RTP hinted files after
abb810db - the hint tracks were ok while the normal media tracks
were broken, noticed by Michael Niedermayer.
This reverts abb810db but achieves the same effect for the other
muxers.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit 'abb810db036628e11a5171134ebe320b187ee6d6':
Revert "rtpenc_chain: Don't copy the time_base back to the caller"
Merged-by: Michael Niedermayer <michaelni@gmx.at>
While it strictly isn't necessary to copy the time base (since
any use of it is scaled in ff_write_chained), it still is better
to signal the actual time base to the caller, avoiding one
unnecessary rescaling. This also lets the caller know what the
actual internal time base is, in case that is useful info
for some caller.
This reverts commit 397ffde115.
Signed-off-by: Martin Storsjö <martin@martin.st>
* commit '43e7f0797f9f821a3866a20f05e512e13c82076a':
flvenc: only write the framerate tag based on avg_frame_rate
Conflicts:
tests/ref/lavf/flv_fmt
tests/ref/seek/lavf-flv_fmt
tests/ref/seek/vsynth2-flv
tests/ref/vsynth/vsynth1-flashsv
tests/ref/vsynth/vsynth1-flv
tests/ref/vsynth/vsynth2-flashsv
tests/ref/vsynth/vsynth2-flv
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'cf6977712c9e5abe6dc55289f6322ccbf10321a9':
movenc: write avg_frame_rate as the framerate, not the codec timebase
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '81eec081afea9fc017a175581ceea7c420a0dfc3':
matroskaenc: base DefaultDuration on the framerate, not the codec timebase
Conflicts:
libavformat/matroskaenc.c
tests/ref/lavf/mkv
tests/ref/seek/lavf-mkv
See: ea83b032af
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This results in DefaultDuration not being written when the framerate is
not known, but as this field is purely informative, this should not
break any sane demuxers.
When the index is not written, several data tables become unneeded,
reducing memory and cpu requirements.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
The broadcast/pipe flags arent stable + 1 they would be 4 or whenever but wouldnt change based
on which is stable
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit '6d212599aa684f30511fb08ca30fe2378405304e':
avformat: Provide a standard compliance flag
Conflicts:
doc/APIchanges
libavformat/avformat.h
libavformat/version.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Add the low overhead pipe mode and the extended broadcast mode.
Export the options as 'syncponts' since it impacts only that.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
This corrects the bug that caused the checksums to change in
9767d7c092.
It caused the EOS flag to be set incorrectly; the ogg spec does not
allow it to be set in the middle of a logical bitstream.
Signed-off-by: Andrew Kelley <superjoe30@gmail.com>
Signed-off-by: Martin Storsjö <martin@martin.st>
Opus in WebM is no more experimental as we have everything necessary in
the container writing code as per the spec. So removing the experimental flag.
Note that we removed the experimental suffix from the CodecId field long
ago ( http://goo.gl/O0TYRB ).
Signed-off-by: Vignesh Venkatasubramanian <vigneshv@google.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'efcde917af407a6031ecff68edd51fce7b83d104':
vorbiscomment: simplify API by using av_dict_count()
Conflicts:
libavformat/flacenc.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '4efdadc8ec50332c812e8a95e8c67f5a260e7cb0':
matroskadec: export just the STREAMINFO block as FLAC extradata
Conflicts:
libavformat/matroskadec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '6df478bf891b9fc5626e4a0b993899f310ba0a1c':
matroskadec: split parsing tracks into a separate function
Conflicts:
libavformat/matroskadec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'd6b9ce99ea384fb676561461768b8316725a4ccd':
flac demuxer: parse the WAVEFORMATEXTENSIBLE_CHANNEL_MASK tag
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This avoids all the ABI troubles associated with avpriv_.
Since this function is very small and does not depend on any tables,
making it inline should have no adverse effects.
Before, header information for ogg format files was sent with the
first encoded packet.
This patch makes it so that it is possible for API users to
differentiate between headers and encoded audio. This is useful, for
example, when creating an audio stream where you want to send one set
of headers for every client that connects and then the encoded stream
of audio.
Signed-off-by: Martin Storsjö <martin@martin.st>
Currently probesize is cliped at 1mb before being used for format detection.
Alternatively this cliping could be removed but this would then tie various
things like stream analysis to the file detection.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Based off the srt encoder. The following features are unimplemented:
- fonts, colors, sizes
- alignment and positioning
The rest works well. For example, use ffmpeg to convert subtitles into the .vtt format:
ffmpeg -i input.srt output.vtt
Signed-off-by: Aman Gupta <ffmpeg@tmm1.net>
Signed-off-by: Clément Bœsch <u@pkh.me>
WebM DASH specification [1] requires the Clusters and Cues to be output in a
specific way. Adding a flag to matroskaenc that will enable support for
creating WebM/Mkv files conforming to the WebM DASH specification.
[1] http://wiki.webmproject.org/adaptive-streaming/webm-dash-specification
Signed-off-by: Vignesh Venkatasubramanian <vigneshv@google.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit '853cc025d63ee2539fc0460dab62c5b9a3fd2043':
mov: store display matrix in a stream side data
Conflicts:
libavformat/isom.h
libavformat/mov.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'a312f71090ee620ee252f2034aef6b13e2dafe9c':
lavf: deprecate now unused AVStream.pts
Conflicts:
libavformat/mux.c
libavformat/version.h
mostly not merged as the code is needed for a/vsync drop handling
and what the code does is what is needed, it could maybe be moved
elsewhere or factored somehow but simply removing it would be droping
these features.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '0ba5299a805e9ccaef1a757381fc2ada4d54b8a1':
movenc: use the "encoder" metadata tag to write stsd Compressorname
Conflicts:
libavformat/movenc.c
libavformat/movenc.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'd246231e4714119faac6c7acd881d3b687bb8b11':
wavenc: use codec descriptors to get the codec name
Conflicts:
libavformat/wavenc.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '79f2c426fde6e71c40b29504112d0528b85be623':
dv: do not set codec timebase
Conflicts:
libavformat/dv.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'b513bf6f69e26e724de6d5dca642c3582dcd0517':
yuv4mpegdec: do not set coded_frame properties
Conflicts:
libavformat/yuv4mpegdec.c
See: b45a3e167f
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'e4dc1000d7bbbcb5b45cf9849fc5315f19578e37':
yuv4mpeg: split the demuxer and muxer into separate files
Conflicts:
libavformat/yuv4mpegdec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
* commit '3ef6c5264b2590781b4ed556443ff49709dd45fb':
a64: check that extradata exists before reading from it
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Whenever av_gettime() is used to measure relative period of time,
av_gettime_relative() is prefered as it guarantee monotonic time
on supported platforms.
Signed-off-by: Olivier Langlois <olivier@trillion01.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Use default values if parsed variable is found not to
have any value. Avoids crashing at strlen for salt/user
on the auth call afterwards and needless NULL assignments
for the rest (default is already NULL for those).
Should fix Coverity Scan issues #966644 and #966645
Signed-off-by: Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
* commit 'c9281a01b78cc3f09e36300a0ca3f5824d1c74cf':
lavf: drop the zero-sized packets hack
Conflicts:
libavformat/mux.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Use it instead of checking CODEC_FLAG_BITEXACT in the first stream's
codec context.
Using codec options inside lavf is fragile and can easily break when the
muxing codec context is not the encoding context.
Problem: ffmpeg tries to read COVR atom data twice if MOV_EXPORT_ALL_METADATA is enabled.
If COVR atom is the last in the stream, a parsing of such file fails.
Solution: just return immediatelly after mov_read_covr
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'a738540366c9b114949b7914c0d08e2c28982cfb':
lavf: properly document the distinction between flags and ctx_flags
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Use the required socket option SO_BROADCAST to be able to stream to a broadcast
address.
Prior to the patch, trying to stream to a broadcast address was resulting to the
following error:
av_interleaved_write_frame(): Permission denied
The patch has been tested with:
ffmpeg -f v4l2 -framerate 30 -input_format yuyv422 -video_size 640x480 -i /dev/video0 \
-c:v libx264 -profile:v high -preset ultrafast -tune zerolatency -b:v 500k -pix_fmt yuv420p \
-f mpegts udp://192.168.1.255:5004?broadcast=1
I have added an option to let the user explicitly request broadcast in order to avoid
ffmpeg to broadcast unintentionally.
Signed-off-by: Olivier Langlois <olivier@trillion01.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
As per RFC3550, section 4, the NTP time is provided as 64-bit unsigned
integer, so follow the same logic here.
Reviewed-by: Luca Barbato <lu_zero@gentoo.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>