James Almer
cde7818d9f
avcodec/frame_thread_encoder: remove usage of avcodec_encode_video2()
...
Call the encoder's internal AVCodec.encode2() function instead.
Signed-off-by: James Almer <jamrial@gmail.com>
2020-05-25 12:46:22 -03:00
James Almer
6275a7ec73
avcodec/frame_thread_encoder: check for frame threading codec cap instead of intra only
...
It's the correct dedicated capability reported by supported encoders.
Otherwise, the frame thread path will be used for unsupported encoders
like r210 for no gain.
Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: James Almer <jamrial@gmail.com>
2020-05-18 12:39:34 -03:00
Carl Eugen Hoyos
e82a619c2a
lavc/frame_thread_encoder: Do not memcpy() from NULL.
...
Fixes ticket #7981 .
2019-08-11 00:03:35 +02:00
lee ju
6a0feafebe
avcodec/frame_thread_encoder: fix memory leak that occurs when close encoder without sending eof and receiving to end
...
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-08-16 03:05:54 +02:00
James Almer
de0526070e
avcodec/frame_thread_encoder: remove usage of av_dup_packet()
...
Signed-off-by: James Almer <jamrial@gmail.com>
2018-04-01 23:40:41 -03:00
James Almer
015f976aae
avcodec/frame_thread_encoder: use av_packet_alloc()
...
Signed-off-by: James Almer <jamrial@gmail.com>
2017-09-23 17:52:32 -03:00
Carl Eugen Hoyos
3118e81f86
lavc/frame_thread_encoder: Do not mix variable declaration and code.
...
Fixes a warning:
ISO C90 forbids mixed declarations and code
2017-09-18 03:24:52 +02:00
Reimar Döffinger
a149fa97d9
avcodec/frame_thread_encoder: Fix AV_OPT_TYPE_STRING handling in avctx
...
This is the equivalent to what 7d317d4706
did for the codec-specific options.
av_opt_copy has specific handling so it's fine that we already copied
the whole context before.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2017-09-16 16:46:00 +02:00
Ronald S. Bultje
183216b218
frame_thread_encoder: make 'exit' member atomic.
...
Should fix the following tsan warning:
WARNING: ThreadSanitizer: data race (pid=19806)
Read of size 4 at 0x7b84000012f0 by thread T9:
#0 worker src/libavcodec/frame_thread_encoder.c:66 (ffmpeg+0x0000007f349e)
[..]
Previous write of size 4 at 0x7b84000012f0 by main thread (mutexes: write M1395):
#0 ff_frame_thread_encoder_free src/libavcodec/frame_thread_encoder.c:239 (ffmpeg+0x0000007f379e)
[..]
2017-09-12 08:21:10 -04:00
Michael Niedermayer
7d317d4706
avcodec/frame_thread_encoder: Fix AV_OPT_TYPE_STRING handling in priv_data
...
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-06-26 01:06:04 +02:00
Ronald S. Bultje
d98f34d7d4
frame_thread_encoder: extend critical code covered by finished_task_mutex.
...
Should fix tsan errors in utvideoenc_rgb_left and related tests.
2017-05-25 10:29:07 -04:00
Michael Niedermayer
f90c9c306f
Check av_dup_packet() return code
...
Fixes: CID1338320
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-06-05 15:22:59 +02:00
Derek Buitenhuis
1a2d6055be
avcodec/frame_thread_encoder: Check the private option for huffy's context modelling
...
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-01-28 17:19:06 +00:00
Clément Bœsch
a8bb81a05c
lavc, lavu: use avutil/thread.h instead of redundant conditional includes
2015-12-07 17:25:51 +01:00
Michael Niedermayer
444e9874a7
Merge commit 'def97856de6021965db86c25a732d78689bd6bb0'
...
* commit 'def97856de6021965db86c25a732d78689bd6bb0':
lavc: AV-prefix all codec capabilities
Conflicts:
cmdutils.c
ffmpeg.c
ffplay.c
libavcodec/8svx.c
libavcodec/aacenc.c
libavcodec/ac3dec.c
libavcodec/adpcm.c
libavcodec/alac.c
libavcodec/atrac3plusdec.c
libavcodec/bink.c
libavcodec/dnxhddec.c
libavcodec/dvdec.c
libavcodec/dvenc.c
libavcodec/ffv1dec.c
libavcodec/ffv1enc.c
libavcodec/fic.c
libavcodec/flacdec.c
libavcodec/flacenc.c
libavcodec/flvdec.c
libavcodec/fraps.c
libavcodec/frwu.c
libavcodec/gifdec.c
libavcodec/h261dec.c
libavcodec/hevc.c
libavcodec/iff.c
libavcodec/imc.c
libavcodec/libopenjpegdec.c
libavcodec/libvo-aacenc.c
libavcodec/libvorbisenc.c
libavcodec/libvpxdec.c
libavcodec/libvpxenc.c
libavcodec/libx264.c
libavcodec/mjpegbdec.c
libavcodec/mjpegdec.c
libavcodec/mpegaudiodec_float.c
libavcodec/msmpeg4dec.c
libavcodec/mxpegdec.c
libavcodec/nvenc_h264.c
libavcodec/nvenc_hevc.c
libavcodec/pngdec.c
libavcodec/qpeg.c
libavcodec/ra288.c
libavcodec/rv10.c
libavcodec/s302m.c
libavcodec/sp5xdec.c
libavcodec/takdec.c
libavcodec/tiff.c
libavcodec/tta.c
libavcodec/utils.c
libavcodec/v210dec.c
libavcodec/vp6.c
libavcodec/vp9.c
libavcodec/wavpack.c
libavcodec/yop.c
Merged-by: Michael Niedermayer <michael@niedermayer.cc>
2015-07-27 22:50:18 +02:00
Michael Niedermayer
94d68a41fa
Merge commit '7c6eb0a1b7bf1aac7f033a7ec6d8cacc3b5c2615'
...
* commit '7c6eb0a1b7bf1aac7f033a7ec6d8cacc3b5c2615':
lavc: AV-prefix all codec flags
Conflicts:
doc/examples/muxing.c
ffmpeg.c
ffmpeg_opt.c
ffplay.c
libavcodec/aacdec.c
libavcodec/aacenc.c
libavcodec/ac3dec.c
libavcodec/ac3enc_float.c
libavcodec/atrac1.c
libavcodec/atrac3.c
libavcodec/atrac3plusdec.c
libavcodec/dcadec.c
libavcodec/ffv1enc.c
libavcodec/h264.c
libavcodec/h264_loopfilter.c
libavcodec/h264_mb.c
libavcodec/imc.c
libavcodec/libmp3lame.c
libavcodec/libtheoraenc.c
libavcodec/libtwolame.c
libavcodec/libvpxenc.c
libavcodec/libxavs.c
libavcodec/libxvid.c
libavcodec/mpeg12dec.c
libavcodec/mpeg12enc.c
libavcodec/mpegaudiodec_template.c
libavcodec/mpegvideo.c
libavcodec/mpegvideo_enc.c
libavcodec/mpegvideo_motion.c
libavcodec/nellymoserdec.c
libavcodec/nellymoserenc.c
libavcodec/nvenc.c
libavcodec/on2avc.c
libavcodec/options_table.h
libavcodec/opus_celt.c
libavcodec/pngenc.c
libavcodec/ra288.c
libavcodec/ratecontrol.c
libavcodec/twinvq.c
libavcodec/vc1_block.c
libavcodec/vc1_loopfilter.c
libavcodec/vc1_mc.c
libavcodec/vc1dec.c
libavcodec/vorbisdec.c
libavcodec/vp3.c
libavcodec/wma.c
libavcodec/wmaprodec.c
libavcodec/x86/hpeldsp_init.c
libavcodec/x86/me_cmp_init.c
Merged-by: Michael Niedermayer <michael@niedermayer.cc>
2015-07-27 22:10:35 +02:00
Hendrik Leppkes
1ffcf6ac90
frame_thread_encoder: use ref-counting to avoid memcpy of all input frames
...
Apparently uneeded lock/unlock removed by commiter
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-12-23 01:36:13 +01:00
Christophe Gisquet
1467780772
huffyuvenc: add a non-deterministic option
...
Not actually used in huffyuvenc, but rather in setting the frame
threading.
Example for some files:
context=0: 851974 27226 1137281
context=1,ND=0: 471819 22604 972351
context=1,ND=1: 472875 22673 972582
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-19 13:47:18 +02:00
Lukasz Marek
bc4f362c92
lavc/frame_thread_encoder: use av_fifo_alloc_array
...
Signed-off-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
2014-05-20 00:00:45 +02:00
Lukasz Marek
9b60d907ae
lavc: use av_fifo_freep
...
Signed-off-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
2014-05-07 23:39:47 +02:00
Michael Niedermayer
466988ab75
Fix dont and doesnt typos
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-04-27 15:14:32 +02:00
Michael Niedermayer
3c7220fc60
avcodec/frame_thread_encoder: warn about huffyuv limitations
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-02-15 15:16:51 +01:00
Michael Niedermayer
f7459bcfc5
avcodec/frame_thread_encoder: restructure huffyuv checks
...
This makes them similar to the other checks
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-02-15 15:14:46 +01:00
Carl Eugen Hoyos
e1cb6dc59e
Warn the user if mjpeg cbr encoding with frame threading was requested.
2014-01-30 01:37:27 +01:00
Carl Eugen Hoyos
cfc36666f6
Force automatic thread_count to 1 for cbr mjpeg frame threading.
...
Constant bit rate mjpeg encoding fails for threads > 1 and frame threading.
2014-01-30 00:22:25 +01:00
Michael Niedermayer
bb7a711156
avcodec/huffyuvenc: frame multi-threading support
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-01-28 14:51:42 +01:00
Dave Yeo
e615a77799
os2threads: move from lavc to compat/
...
For useage in other places besides lavc. Needed after commit
90f9a5830b
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-05-28 12:49:20 +02:00
Michael Niedermayer
42bb3e4db6
avcodec: remove ff_get_logical_cpus()
...
This simplifies the code
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-05-24 20:25:53 +02:00
Michael Niedermayer
a4d3757b29
Merge commit '90f9a5830b5d332de7ebb1ab45589f1870cbd65d'
...
* commit '90f9a5830b5d332de7ebb1ab45589f1870cbd65d':
w32pthreads: move from lavc to compat/
Conflicts:
libavcodec/Makefile
libavcodec/pthread.c
libavcodec/vp8.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-05-24 13:01:41 +02:00
Michael Niedermayer
80e9e63c94
Merge commit '759001c534287a96dc96d1e274665feb7059145d'
...
* commit '759001c534287a96dc96d1e274665feb7059145d':
lavc decoders: work with refcounted frames.
Anton Khirnov (1):
lavc decoders: work with refcounted frames.
Clément Bœsch (47):
lavc/ansi: reset file
lavc/ansi: re-do refcounted frame changes from Anton
fraps: reset file
lavc/fraps: switch to refcounted frames
gifdec: reset file
lavc/gifdec: switch to refcounted frames
dsicinav: resolve conflicts
smc: resolve conflicts
zmbv: resolve conflicts
rpza: resolve conflicts
vble: resolve conflicts
xxan: resolve conflicts
targa: resolve conflicts
vmnc: resolve conflicts
utvideodec: resolve conflicts
tscc: resolve conflicts
ulti: resolve conflicts
ffv1dec: resolve conflicts
dnxhddec: resolve conflicts
v210dec: resolve conflicts
vp3: resolve conflicts
vcr1: resolve conflicts
v210x: resolve conflicts
wavpack: resolve conflicts
pngdec: fix compilation
roqvideodec: resolve conflicts
pictordec: resolve conflicts
mdec: resolve conflicts
tiertexseqv: resolve conflicts
smacker: resolve conflicts
vb: resolve conflicts
vqavideo: resolve conflicts
xl: resolve conflicts
tmv: resolve conflicts
vmdav: resolve conflicts
truemotion1: resolve conflicts
truemotion2: resolve conflicts
lcldec: fix compilation
libcelt_dec: fix compilation
qdrw: fix compilation
r210dec: fix compilation
rl2: fix compilation
wnv1: fix compilation
yop: fix compilation
tiff: resolve conflicts
interplayvideo: fix compilation
qpeg: resolve conflicts (FIXME/TESTME).
Hendrik Leppkes (33):
012v: convert to refcounted frames
8bps: fix compilation
8svx: resolve conflicts
4xm: resolve conflicts
aasc: resolve conflicts
bfi: fix compilation
aura: fix compilation
alsdec: resolve conflicts
avrndec: convert to refcounted frames
avuidec: convert to refcounted frames
bintext: convert to refcounted frames
cavsdec: resolve conflicts
brender_pix: convert to refcounted frames
cinepak: resolve conflicts
cinepak: avoid using AVFrame struct directly in private context
cljr: fix compilation
cpia: convert to refcounted frames
cscd: resolve conflicts
iff: resolve conflicts and do proper conversion to refcounted frames
4xm: fix reference frame handling
cyuv: fix compilation
dxa: fix compilation
eacmv: fix compilation
eamad: fix compilation
eatgv: fix compilation
escape124: remove unused variable.
escape130: convert to refcounted frames
evrcdec: convert to refcounted frames
exr: convert to refcounted frames
mvcdec: convert to refcounted frames
paf: properly free the frame data on decode close
sgirle: convert to refcounted frames
lavfi/moviesrc: use refcounted frames
Michael Niedermayer (56):
Merge commit '759001c534287a96dc96d1e274665feb7059145d'
resolve conflicts in headers
motion_est: resolve conflict
mpeg4videodec: fix conflicts
dpcm conflict fix
dpx: fix conflicts
indeo3: resolve confilcts
kmvc: resolve conflicts
kmvc: resolve conflicts
h264: resolve conflicts
utils: resolve conflicts
rawdec: resolve conflcits
mpegvideo: resolve conflicts
svq1enc: resolve conflicts
mpegvideo: dont clear data, fix assertion failure on fate vsynth1 with threads
pthreads: resolve conflicts
frame_thread_encoder: simple compilefix not yet tested
snow: update to buffer refs
crytsalhd: fix compile
dirac: switch to new API
sonic: update to new API
svq1: resolve conflict, update to new API
ffwavesynth: update to new buffer API
g729: update to new API
indeo5: fix compile
j2kdec: update to new buffer API
linopencore-amr: fix compile
libvorbisdec: update to new API
loco: fix compile
paf: update to new API
proresdec: update to new API
vp56: update to new api / resolve conflicts
xface: convert to refcounted frames
xan: fix compile&fate
v408: update to ref counted buffers
v308: update to ref counted buffers
yuv4dec: update to ref counted buffers
y41p: update to ref counted frames
xbm: update to refcounted frames
targa_y216: update to refcounted buffers
qpeg: fix fate/crash
cdxl: fix fate
tscc: fix reget buffer useage
targa_y216dec: fix style
msmpeg4: fix fate
h264: ref_picture() copy fields that have been lost too
update_frame_pool: use channel field
h264: Put code that prevents deadlocks back
mpegvideo: dont allow last == current
wmalossless: fix buffer ref messup
ff_alloc_picture: free tables in case of dimension mismatches
h264: fix null pointer dereference and assertion failure
frame_thread_encoder: update to bufrefs
ec: fix used arrays
snowdec: fix off by 1 error in dimensions check
h264: disallow single unpaired fields as references of frames
Paul B Mahol (2):
lavc/vima: convert to refcounted frames
sanm: convert to refcounted frames
Conflicts:
libavcodec/4xm.c
libavcodec/8bps.c
libavcodec/8svx.c
libavcodec/aasc.c
libavcodec/alsdec.c
libavcodec/anm.c
libavcodec/ansi.c
libavcodec/avs.c
libavcodec/bethsoftvideo.c
libavcodec/bfi.c
libavcodec/c93.c
libavcodec/cavsdec.c
libavcodec/cdgraphics.c
libavcodec/cinepak.c
libavcodec/cljr.c
libavcodec/cscd.c
libavcodec/dnxhddec.c
libavcodec/dpcm.c
libavcodec/dpx.c
libavcodec/dsicinav.c
libavcodec/dvdec.c
libavcodec/dxa.c
libavcodec/eacmv.c
libavcodec/eamad.c
libavcodec/eatgq.c
libavcodec/eatgv.c
libavcodec/eatqi.c
libavcodec/error_resilience.c
libavcodec/escape124.c
libavcodec/ffv1.h
libavcodec/ffv1dec.c
libavcodec/flicvideo.c
libavcodec/fraps.c
libavcodec/frwu.c
libavcodec/g723_1.c
libavcodec/gifdec.c
libavcodec/h264.c
libavcodec/h264.h
libavcodec/h264_direct.c
libavcodec/h264_loopfilter.c
libavcodec/h264_refs.c
libavcodec/huffyuvdec.c
libavcodec/idcinvideo.c
libavcodec/iff.c
libavcodec/indeo2.c
libavcodec/indeo3.c
libavcodec/internal.h
libavcodec/interplayvideo.c
libavcodec/ivi_common.c
libavcodec/jvdec.c
libavcodec/kgv1dec.c
libavcodec/kmvc.c
libavcodec/lagarith.c
libavcodec/libopenjpegdec.c
libavcodec/mdec.c
libavcodec/mimic.c
libavcodec/mjpegbdec.c
libavcodec/mjpegdec.c
libavcodec/mmvideo.c
libavcodec/motion_est.c
libavcodec/motionpixels.c
libavcodec/mpc7.c
libavcodec/mpeg12.c
libavcodec/mpeg4videodec.c
libavcodec/mpegvideo.c
libavcodec/mpegvideo.h
libavcodec/msrle.c
libavcodec/msvideo1.c
libavcodec/nuv.c
libavcodec/options_table.h
libavcodec/pcx.c
libavcodec/pictordec.c
libavcodec/pngdec.c
libavcodec/pnmdec.c
libavcodec/pthread.c
libavcodec/qpeg.c
libavcodec/qtrle.c
libavcodec/r210dec.c
libavcodec/rawdec.c
libavcodec/roqvideodec.c
libavcodec/rpza.c
libavcodec/smacker.c
libavcodec/smc.c
libavcodec/svq1dec.c
libavcodec/svq1enc.c
libavcodec/targa.c
libavcodec/tiertexseqv.c
libavcodec/tiff.c
libavcodec/tmv.c
libavcodec/truemotion1.c
libavcodec/truemotion2.c
libavcodec/tscc.c
libavcodec/ulti.c
libavcodec/utils.c
libavcodec/utvideodec.c
libavcodec/v210dec.c
libavcodec/v210x.c
libavcodec/vb.c
libavcodec/vble.c
libavcodec/vcr1.c
libavcodec/vmdav.c
libavcodec/vmnc.c
libavcodec/vp3.c
libavcodec/vp56.c
libavcodec/vp56.h
libavcodec/vp6.c
libavcodec/vqavideo.c
libavcodec/wavpack.c
libavcodec/xl.c
libavcodec/xxan.c
libavcodec/zmbv.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-03-12 03:23:28 +01:00
Michael Niedermayer
874c5b02c4
Merge commit '594d4d5df3c70404168701dd5c90b7e6e5587793'
...
* commit '594d4d5df3c70404168701dd5c90b7e6e5587793':
lavc: add a wrapper for AVCodecContext.get_buffer().
Conflicts:
libavcodec/4xm.c
libavcodec/8svx.c
libavcodec/bmv.c
libavcodec/cljr.c
libavcodec/cscd.c
libavcodec/dnxhddec.c
libavcodec/dpcm.c
libavcodec/dpx.c
libavcodec/eacmv.c
libavcodec/eamad.c
libavcodec/frwu.c
libavcodec/g723_1.c
libavcodec/gifdec.c
libavcodec/idcinvideo.c
libavcodec/iff.c
libavcodec/indeo3.c
libavcodec/internal.h
libavcodec/interplayvideo.c
libavcodec/kmvc.c
libavcodec/mpc7.c
libavcodec/mpegaudiodec.c
libavcodec/pcx.c
libavcodec/pngdec.c
libavcodec/pnmdec.c
libavcodec/rl2.c
libavcodec/snow.c
libavcodec/targa.c
libavcodec/tscc.c
libavcodec/txd.c
libavcodec/utils.c
libavcodec/v210dec.c
libavcodec/vb.c
libavcodec/vmdav.c
libavcodec/vp56.c
libavcodec/vqavideo.c
libavcodec/wavpack.c
libavcodec/wnv1.c
libavcodec/xl.c
libavcodec/yop.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-12-05 15:18:12 +01:00
Michael Niedermayer
3affcc99a8
frame_thread_encoder: silence integer to pointer without cast warning
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-11-08 18:25:24 +01:00
Michael Niedermayer
f4aaf987a5
frame_thread_encoder: fix handling of case where the encoder does not output a packet.
...
This case could cause a deadlock
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-11-05 13:30:08 +01:00
Michael Niedermayer
f472d01c25
frame_thread_encode: fix context memleak
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-10-28 17:04:11 +01:00
Michael Niedermayer
991db63951
frame_thread_encoder: fix packet memleak
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-10-28 16:47:23 +01:00
Michael Niedermayer
2d5c80b2e8
frame_thread_encoder: pass frame pict type and quality
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-08-29 04:26:59 +02:00
Michael Niedermayer
097a909ea1
frame_thread_encoder: pass private options
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-08-29 04:26:36 +02:00
Michael Niedermayer
fde1bc64ad
lavc: add frame multithreading capability (currently intra only)
...
Compared to the decoder side, this code is able to change both the
delay and the number of threads seamlessly during encoding. Also
any idle thread can pick up tasks, the strict round robin in order
limit is gone too.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-06-23 01:38:47 +02:00