Commit Graph
100 Commits
Author SHA1 Message Date
Matthieu Bouron d5082a2ce7 lavc/mediacodec: use more meaningful filenames
Adds the following changes:
  * mediacodecdec.{c,h} -> mediacodecdec_common.{c,h}
  * mediacodecdec_h2645.c -> mediacodecdec.c
2016-10-19 10:50:56 +02:00
Matthieu Bouron f62c54456d lavc: add mpeg4 mediacodec decoder 2016-10-19 10:50:52 +02:00
Matthieu Bouron 0f7fce87ea lavc: add vp8/vp9 mediacodec decoders 2016-10-19 10:50:12 +02:00
Matthieu Bouron b8c158a4ed lavc/mediacodec_wrapper: do not discard codecs reporting they do not support any profile
Depending on the device, some (VP8/VP9/...) decoders report that they do
not support any profiles.
2016-10-19 09:52:15 +02:00
Matthieu Bouron cfa3c2655a lavc/mediacodecdec: rename dequeued_buffer_nb to output_buffer_count 2016-10-12 09:50:42 +02:00
Matthieu Bouron a458ed65b5 lavc/mediacodecdec: remove first output buffer timing debug log 2016-10-12 09:50:42 +02:00
Matthieu Bouron 0919151651 lavc/mediacodecdec: fix size variable shadowing in ff_mediacodec_dec_decode
Fixes incompatible pointer type warning on 64-bit systems.
2016-10-06 16:49:28 +02:00
Matthieu Bouron 68822da8ff lavc/mediacodecdec_h2645: fix nalu data_size type 2016-10-03 14:16:53 +02:00
Matthieu Bouron 140da8e810 lavc: add hevc mediacodec decoder 2016-09-15 21:48:28 +02:00
Matthieu Bouron 025f75c3ad lavc/ffjni: do not error out if the last non-mandatory field/method cannot be found 2016-09-12 09:56:37 +02:00
Matthieu Bouron bf011695fd lavc/hevc: store VPS/SPS/PPS data 2016-09-09 16:35:37 +02:00
Matthieu Bouron 4b290078e4 lavc/mediacodecdec_h264: use h264_parse.h instead of h264dec.h
ff_h264_decode_extradata is referenced by h264_parse.h and not
h264dec.h.
2016-09-07 21:04:13 +02:00
Matthieu Bouron 256e99f6f0 lavc/mediacodecdec_h264: move bsf variable declaration at the top of the function 2016-09-07 21:04:13 +02:00
Matthieu Bouron f574012d5f lavc/mediacodecdec_h264: fix SODB escaping
Fixes escaping of consecutive 0x00, 0x00, 0x0{0-3} sequences.
2016-09-07 15:35:09 +02:00
Matthieu Bouron 83b9909398 Changelog: add entry for MediaCodec hwaccel 2016-07-28 16:11:52 +02:00
Matthieu Bouron 376d8fb2c5 lavc/ffjni: replace ff_jni_{attach,detach} with ff_jni_get_env
If a JNI environment is not already attached to the thread where the
MediaCodec calls are made the current implementation will attach /
detach an environment for each MediaCodec call wasting some CPU time.

ff_jni_get_env replaces ff_jni_{attach,detach} by permanently attaching
an environment (if it is not already the case) to the current thread.
The environment will be automatically detached at the thread destruction
using a pthread_key callback.

Saves around 5% of CPU time (out of 20%) while decoding a stream with
MediaCodec.
2016-07-27 15:43:39 +02:00
Matthieu Bouron 2adbea4e21 lavc: always build dnxhddata
lavc/movenc rely on avpriv_dnxhd_parse_header_prefix declared by
dnxhddata.h since e47981dab7.

Fixes a missing symbol error in lavc/movenc if the dnxhd encoder is not
enabled.
2016-07-24 22:57:06 +02:00
Matthieu Bouron 6c8942cdfb lavf/mov: fix stream extradata_size allocation
Fixes CID 1363963.
2016-07-14 09:18:39 +02:00
Matthieu Bouron 57fa9608e4 Merge commit 'ec9f04423b82afa323e90f5b2c677be74302c1fd'
* commit 'ec9f04423b82afa323e90f5b2c677be74302c1fd':
  ffv1: Error out on unsupported format

This commit is a noop, the feature is already present in FFmpeg.

Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
2016-07-13 17:40:56 +02:00
Matthieu Bouron a91c330a29 Merge commit '105998fb5ca3c343f5c8cb39ce3197f87a5e4d36'
* commit '105998fb5ca3c343f5c8cb39ce3197f87a5e4d36':
  checkasm: Add tests for h264 idct

Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
2016-07-13 17:22:29 +02:00
Matthieu Bouron 495a40cecb tests/checkasm: reduce cosmetic diff with libav
Chunk was not merged in ca5ec2bf51.
2016-07-13 17:11:58 +02:00
Matthieu Bouron 354336490d Merge commit '846a3e78a535f05ee61bb23a160f3378f041f751'
* commit '846a3e78a535f05ee61bb23a160f3378f041f751':
  mov: Support prores with multiple stsd

Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
2016-07-13 16:56:20 +02:00
Matthieu Bouron 3c058f5701 Merge commit '76729970049fe95659346503f7401a5d869f9959'
* commit '76729970049fe95659346503f7401a5d869f9959':
  mov: Implement support for multiple sample description tables

Notes:
  * The sc->stsc_data[index].id checks have been moved from the mov_read_stsc
  to mov_read_packet before the value is used in mov_change_extradata to
  not break playback of samples with broken stsc entries (see sample of
  ticket #1918).

  * sc->stsc_index is now checked against sc->stsc_count - 1 before it
  is incremented so it remains lesser than sc->stsc_count. Fixes a crash
  with:

  ./ffmpeg -i matrixbench_mpeg2.mpg -t 1 -frag_duration 200k test.mov
  ./ffprobe -show_packets test.mov

Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
2016-07-13 16:34:54 +02:00
Matthieu Bouron 0f2654c9a3 lavc: add mediacodec hwaccel support 2016-07-08 17:02:37 +02:00
Matthieu Bouron 88d9c30cf5 lavc/mediacodecdec_h264: properly convert extradata to annex-b
H264ParamSets has its SPS/PPS stored raw (SODB) and needs to be
converted to NAL units before sending them to MediaCodec.

This patch adds the missing convertion of the SPS/PPS from SOBP to RBSP
which makes the resulting NAL units correct.

Fixes codec initialization on Nexus 4 and Nexus 7.
2016-07-06 15:10:16 +02:00
Matthieu Bouron db0af7250a lavc/mediacodecdec_h264: add missing NAL headers to SPS/PPS buffers
Fixes a regression introduced by 0cd5e281df.
2016-06-29 10:46:29 +02:00
Matthieu Bouron 0acc170aad Merge commit '535a742c2695a9e0c586b50d7fa76e318232ff24'
* commit '535a742c2695a9e0c586b50d7fa76e318232ff24':
  build: Change structure of the linker version script templates

Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
2016-06-27 17:56:47 +02:00
Matthieu Bouron 0fd76d77d6 Merge commit '5b1b495c8d21600eac694d50f428654a3125e217'
* commit '5b1b495c8d21600eac694d50f428654a3125e217':
  build: Print a message when generating version scripts

Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
2016-06-27 17:35:04 +02:00
Matthieu Bouron 9eb3da2f99 asm: FF_-prefix internal macros used in inline assembly
See merge commit '39d6d3618d48625decaff7d9bdbb45b44ef2a805'.
2016-06-27 17:21:18 +02:00
Matthieu Bouron 39d6d3618d Merge commit '1e9c5bf4c136fe9e010cc8a7e7270bba0d1bf45e'
* commit '1e9c5bf4c136fe9e010cc8a7e7270bba0d1bf45e':
  asm: FF_-prefix internal macros used in inline assembly

This commit is a noop as the ASM codebase differs too much between libav
and ffmpeg. The corresponding chunks will be found in the next commit.

Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
2016-06-27 17:18:25 +02:00
Matthieu Bouron 7e4e8fdd34 Merge commit '72d621069fc301b431fac36b5281699a362562f2'
* commit '72d621069fc301b431fac36b5281699a362562f2':
  movenc: Add a missed const

Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
2016-06-23 22:30:37 +02:00
Matthieu Bouron c60d328e67 Merge commit 'a79aafd0b4d37eda6f15dc68e6509d4e815290c9'
* commit 'a79aafd0b4d37eda6f15dc68e6509d4e815290c9':
  movenc: Add a test for VFR with b-frames, with a duration change at a fragment end

Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
2016-06-23 22:20:10 +02:00
Matthieu Bouron b1e1da52fe Merge commit 'e1eb0fc960163402bbb4e630185790488f7d28ed'
* commit 'e1eb0fc960163402bbb4e630185790488f7d28ed':
  movenc: Use packets in interleaving queues for the duration at the end of fragments

Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
2016-06-23 22:02:31 +02:00
Matthieu Bouron d671652f6e Merge commit 'fd4957d9c67996e7d218fd36b4168c9cb85f9ea7'
* commit 'fd4957d9c67996e7d218fd36b4168c9cb85f9ea7':
  movenc-test: Test write_data_type

Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
2016-06-23 18:03:49 +02:00
Matthieu Bouron dc62016c4b Merge commit '71852a1ba89abc8749e309d9d662c49d47e19531'
* commit '71852a1ba89abc8749e309d9d662c49d47e19531':
  matroskaenc: Provide output bytestream markers

Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
2016-06-23 17:57:34 +02:00
Matthieu Bouron 4e7a921282 Merge commit 'dbbaad32e36b9046cd19d6e3329e2ca7ab49b401'
* commit 'dbbaad32e36b9046cd19d6e3329e2ca7ab49b401':
  movenc: Provide output bytestream markers for fragmented content

Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
2016-06-23 17:52:14 +02:00
Matthieu Bouron 625eb41086 Merge commit '371df9ba71393a1c5429d5f40c76348b30e556c7'
* commit '371df9ba71393a1c5429d5f40c76348b30e556c7':
  flvenc: Provide output bytestream markers

Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
2016-06-23 17:43:19 +02:00
Matthieu Bouron 5d75e46677 Merge commit 'db7968bff4851c2be79b15b2cb2ae747424d2fca'
* commit 'db7968bff4851c2be79b15b2cb2ae747424d2fca':
  avio: Allow custom IO users to get labels for the output bytestream

Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
2016-06-23 15:59:44 +02:00
Matthieu Bouron 55816c9269 lavc/mediacodec: increase buffer dequeue timeout when the codec needs to be drained
Increase buffer dequeue timeout when the codec needs to be drained as it
could happen that no input buffer is available when we receive a null
packet for the first time (meaning we are unable to signal end of stream
and mark the codec as draining).

Fixes potential loss of last frames after sending a null packet.
2016-06-23 14:14:15 +02:00
Matthieu Bouron b316ebf46d lavc/mediacodec: rely on buffer flags to detect end of stream 2016-06-23 14:14:15 +02:00
Matthieu Bouron 30e3a27119 lavc/mediacodec: re-indent after previous commit 2016-06-23 14:14:15 +02:00
Matthieu Bouron a71d518575 lavc/mediacodec: discard 0-sized buffers
Their only purpose is to carry the end of stream flag.
2016-06-23 14:14:15 +02:00
Matthieu Bouron df3484f87c lavc/videotoolbox: fix avcC extradata creation
Fixes properly ticket #5638.

Since 772ad7142d PPS and SPS contain the
nal type byte.

This reverts commit b8d754c5d0.
This reverts commit 8e47a99f57.
2016-06-22 10:03:45 +02:00
Matthieu Bouron 0cd5e281df lavc/mediacodecdec_h264: use ff_h264_decode_extradata to extract PPS/SPS
Fixes playback of HLS streams on MediaTek devices which requires PPS/SPS
to be set in their respective csd-{0,1} buffers.
2016-06-21 14:20:57 +02:00
Matthieu Bouron 0ea58059d6 lavc/h264_ps: add ff_h264_ps_uninit and use it 2016-06-20 16:09:09 +02:00
Matthieu Bouron acfab2dce6 lavf/mov: ignore ctts entries that do not apply to a least one sample
Fixes packet pts of samples which contain ctts entries with count <= 0.
2016-06-20 15:43:14 +02:00
Matthieu Bouron 432891a96e lavc/mediacodecdec{,_h264}: set FF_CODEC_CAP_SETS_PKT_DTS capability
And sets frames pkt_dts to AV_NOPTS_VALUE as we do not want lavc/utils
to overwrite the field with incorrect values as the decoder is
asynchronous.
2016-06-20 10:07:41 +02:00
Matthieu Bouron 346b3c5c41 lavc/mediacodec: re-indent after previous commit 2016-06-15 16:40:36 +02:00
Matthieu Bouron e452abc5c2 lavc/mediacodec: refactor ff_AMediaCodecList_getCodecByType
Allows to select a codec (encoder or decoder) only if it supports a
specific profile.

Adds ff_AMediaCodecProfile_getProfileFromAVCodecContext to convert an
AVCodecContext profile to a MediaCodec profile. It only supports H264
for now.

The codepath using MediaCodecList.findDecoderForFormat() (Android >= 5.0)
has been dropped as this method does not allow to select a decoder
compatible with a specific profile.
2016-06-15 16:36:13 +02:00
Matthieu Bouron 1729387c7a lavc/mediacodec: improve error messages 2016-06-07 10:22:27 +02:00
Matthieu Bouron 93f4d1646e lavc/mediacodec: bypass width/height restrictions when looking for a decoder
Codec width/height restrictions seem hardcoded at the OMX level and
seem arbitrary. Bypassing those restrictions allows a device to decode
streams at higher resolutions.

For example it allows a Nexus 5 to decode h264 streams with a resolution
higher than 1920x1080.
2016-06-07 10:22:20 +02:00
Matthieu Bouron cb89fd2334 lavc/mediacodec: rename MediaFormat field clazz to mediaformat_class for consistency 2016-06-07 10:20:44 +02:00
Matthieu Bouron 56ef387e21 lavc/mediacodec: move struct declarations at the begin 2016-06-07 10:20:44 +02:00
Matthieu Bouron 79efd3b8b8 lavc/mediacodec: rename jfields_mapping to jni_amediacodeclist_mapping 2016-06-07 10:20:36 +02:00
Matthieu Bouron f2e7f9966e lavc/mediacodec: do not delete a local reference twice in case of error 2016-06-07 10:18:11 +02:00
Matthieu Bouron 12f47539ca lavc/mediacodecdec_h264: rename input_ref to input_pkt 2016-06-03 10:20:54 +02:00
Matthieu Bouron 15432a903e lavc/mediacodecdec_h264: switch to new BSF API 2016-06-03 10:20:54 +02:00
Matthieu Bouron e0df56f25d lavc/vaapi_encoder_{h264,h265}: fix bad format warning 2016-06-03 10:09:39 +02:00
Matthieu Bouron d14deeb6bc lavc/mediacodec: add missing MediaCodec.Get{Input,Output}Buffer() checks 2016-05-25 16:46:47 +02:00
Matthieu Bouron fbc9359d85 lavc/mediacodec: factorize static fields initialization 2016-05-25 16:46:47 +02:00
Matthieu Bouron f6265a5cbc swresample/arm: add ff_resample_common_apply_filter_{x4,x8}_{float,s16}_neon 2016-05-13 21:13:46 +02:00
Matthieu Bouron 4c22441276 swscale/arm: add yuv2planeX_8_neon 2016-04-11 18:13:36 +02:00
Matthieu Bouron 7abc8e7ae3 swscale/arm: add ff_hscale_8_to_15_neon 2016-04-09 00:16:56 +02:00
Matthieu Bouron ff4885face swscale/arm/yuv2rgb: rename {process_1l,process_2l,compute}_16px{,_internal} macros 2016-04-01 17:23:45 +02:00
Matthieu Bouron 0286b56f2f swscale/arm/yuv2rgb: factorize lsl in load_args_nvx 2016-04-01 17:23:45 +02:00
Matthieu Bouron 0649fe0fae swscale/arm/yuv2rgb: factorize lsl in load_args_yuv420p 2016-04-01 17:23:45 +02:00
Matthieu Bouron 2aec59c07c swscale/arm/yuv2rgb: remove unused store of dst + linesize in load_args_yuv422p 2016-04-01 17:23:45 +02:00
Matthieu Bouron b3ea901945 swscale/arm/yuv2rgb: factorize lsl in load_args_yuv422p 2016-04-01 17:23:45 +02:00
Matthieu Bouron 466e209e6e swscale/arm/yuv2rgb: fix comments in load_args_yuv422p 2016-04-01 17:23:45 +02:00
Matthieu Bouron 11b4acab8b swscale/arm/yuv2rgb: remove 32bit code path 2016-04-01 17:23:45 +02:00
Matthieu Bouron 308d3ed5aa lavc/mediacodec: use ternary operator to set slice-height value 2016-03-28 10:10:21 +02:00
Matthieu Bouron 03a6ed83b0 lavc/mediacodec: remove stray empty lines 2016-03-15 10:33:16 +01:00
Matthieu Bouron 31fe3c4d23 lavc/mediacodec: fix codec_name leak 2016-03-15 10:30:51 +01:00
Matthieu Bouron 33d69a9008 lavc/ffjni: remove use of private JniInvocation API to retreive the Java VM
Android N will prevent users from loading non-public APIs.

Users should only rely on the av_jni_set_java_vm function to set the
Java VM.
2016-03-14 10:05:33 +01:00
Matthieu Bouron 8d0a218058 lavc/ffjni: fix uninitialized variable 2016-03-10 18:17:28 +01:00
Matthieu Bouron 8c24523cc5 lavc/mediacodec: fix chroma width for yuv420p 2016-03-07 14:41:55 +01:00
Matthieu Bouron 81f14884b5 lavc/mjpegdec: avoid unneeded allocation if the frame is to be skipped 2016-03-07 12:36:23 +01:00
Matthieu Bouron 4737fe6907 lavc: add h264 mediacodec decoder 2016-03-07 11:28:29 +01:00
Matthieu Bouron 3ab178516e lavc: add JNI support 2016-03-07 11:17:31 +01:00
Matthieu Bouron 885a6d8324 configure: only check dispatch header on darwin
Fixes build of lavd/jack on linux if dispatch happens to be available on
this platform. dispatch, as well as its dependencies kqueue and pwq are
generally not installed / distribued on linux systems. If it happens to
be the case, you want to explicitely link against the libraries (using
-ldispatch) as opposed to darwin where it is part of the standard
library and -ldispatch doesn't work.
2016-02-26 09:23:17 +01:00
Matthieu BouronandMatthieu Bouron 666e2edc41 configure: add missing --strip option to show_help() 2016-02-25 21:21:39 +01:00
Matthieu Bouron 27f1ea5097 lavc/mjpegdec: use ptrdiff_t instead of ssize_t
Fixes build on msvc.
2016-01-28 09:25:59 +01:00
Matthieu Bouron 0d733ec379 lavc/mjpegdec: speed up scan data copy 2016-01-27 20:08:52 +01:00
Matthieu Bouron e4e9b9454e swscale/arm/yuv2rgb: add ff_yuv422p_to_{argb,rgba,abgr,bgra}_neon_{16,32} 2016-01-04 18:56:52 +01:00
Matthieu Bouron b32a42295a swscale/arm/yuv2rgb: add ff_yuv420p_to_{argb,rgba,abgr,bgra}_neon_{16,32} 2015-12-19 22:09:28 +01:00
Matthieu Bouron e0dc22b99e swscale/arm/yuv2rgb: disable neon if accurate_rnd is enabled
This disables the 32bit precision neon code path in favor of the
default C one and avoids breaking fate.
2015-12-19 22:09:28 +01:00
Matthieu Bouron c2ad248321 swscale/arm/yuv2rgb: simplify process_16px_* macro call 2015-12-19 10:42:33 +01:00
Matthieu Bouron ae1c750cb4 lavc/utils: use AVPixFmtDescriptor to probe palette formats
Also use the input frame format instead of the AVCodecContext one according
to the documentation of AVCodecContext.get_buffer2().
2015-12-15 10:35:47 +01:00
Matthieu Bouron 0c59d40ae0 lavfi: use a video frame pool for each link of the filtergraph 2015-12-15 10:35:41 +01:00
Matthieu Bouron 3d09065316 fate/api-jpeg-codec-param: rename to api-mjpeg-codec-param 2015-12-08 20:43:20 +01:00
Matthieu Bouron 5aca33c2cf swscale/arm: add ff_nv{12,21}_to_{argb,rgba,abgr,bgra}_neon_16 2015-12-08 08:12:42 +01:00
Matthieu Bouron 102842d5fb fate/api-{jpeg,png}-codec-param: add missing codec dependencies 2015-12-08 08:12:35 +01:00
Matthieu Bouron bd0a9f603d fate/api-codec-param: fix codec context leak 2015-12-08 08:12:35 +01:00
Matthieu Bouron 72eaf72623 lavf/utils: avoid decoding a frame to get the codec parameters
Avoid decoding a frame to get the codec parameters while the codec
supports FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM. This is particulary useful
to avoid decoding twice images (once in avformat_find_stream_info and
once when the actual decode is made).
2015-11-26 21:50:55 +01:00
Matthieu Bouron 39290f2715 fate: add FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM tests 2015-11-26 17:05:54 +01:00
Matthieu BouronandClément Bœsch 46feb66972 swscale/arm: add ff_nv{12,21}_to_{argb,rgba,abgr,bgra}_neon
Signed-off-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
Signed-off-by: Clément Bœsch <clement@stupeflix.com>
2015-11-23 14:47:12 +01:00
Matthieu Bouron 0cdc77f104 lavc/pngdec: set FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM capability 2015-11-15 10:13:24 +01:00
Matthieu Bouron ad0203d7b0 lavc/mjpegdec: set FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM capability 2015-11-15 10:13:24 +01:00
Matthieu Bouron e162542e15 lavc/internal: add FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM
The decoder extracts and fills its parameters even if the frame is
skipped due to the skip_frame setting.
2015-11-15 10:13:00 +01:00
Matthieu Bouron ff0dfb5c36 lavc/mjpegdec: honor skip_frame option 2015-10-29 12:04:11 +01:00