Commit graph

49 commits

Author SHA1 Message Date
Robert Swain
f269e0679f x264enc: Refactor code in preparation for presets/tunings
- Make defaults append the appropriate default value to a string. This is
  needed to differentiate between something user-set and the actual prop
  default.
- Add an internal option string to which _set_property () cases append for the
  majority of properties.
- Use gst_x264_enc_parse_options () to clean up application of settings. This
  will make order of application with respect to the presets and tunings quite
  simple.

Addresses part of bug #607798
2010-07-25 13:37:47 +02:00
Robert Swain
ac6b656ed3 x264enc: Update available me types
Use the x264_motion_est_names[] array to populate the enum of ME types. This is
now self-maintaining.
2010-07-25 13:37:47 +02:00
Robert Swain
d6f766d10f x264enc: Use new libx264 API to affect fast first pass
Uses new x264 API to apply reduced complexity values to the parameters to
increase encoding speed in the first pass of a multi-pass encode. This does
not impact on final quality.

Addresses part of bug #607798
2010-07-25 13:37:47 +02:00
Robert Swain
76cc4dbc07 x264enc: Add profile property
In X264_BUILD >= 86 there is a new API for applying restrictions to an H.264
Profile. This makes it easier to achieve Baseline Profile for example.

Addresses part of bug #607798
2010-07-25 13:37:45 +02:00
Robert Swain
f2be62695c x264enc: Add option-string property
Adds support for an x264 format option-string to specify advanced parameters

Addresses part of bug #607798
2010-07-23 09:35:48 +02:00
Mark Nauwelaerts
bd6d9402e0 x264enc: only set timebase on versions where it exists 2010-07-20 19:44:51 +02:00
David Hoyt
35f0e23a46 x264enc: set appropriate time base
Fixes #624786.
2010-07-20 16:44:46 +02:00
Mark Nauwelaerts
49f1373f1b x264enc: add new h264 caps attribute alignment
See #606662.
2010-06-22 11:42:18 +02:00
Mark Nauwelaerts
27025d0ebd x264enc: conditionally expose enhanced upstream capabilities
API: GstX264Enc:sliced-threads
API: GstX264Enc:sync-lookahead
API: GstX264Enc:intra-refresh
API: GstX264Enc:mb-tree
API: GstX264Enc:rc-lookahead

See #607798.
2010-06-18 18:47:49 +02:00
Olivier Crête
2339add6d5 x264enc: Only set i_weighted_pred on versions where it exists 2010-06-01 13:44:06 -04:00
Olivier Crête
d6df52f99a x264enc: disable I weighted pred
If it is enabled, then it will be main profile instead of baseline.
This ensures maximum compatibility of the output stream until the
encoder configuration interface gets an overhaul with explicit
output profile selection.

Fixes #619776.
2010-05-28 12:15:42 +01:00
Olivier Crête
7f685c4a21 x264enc: Re-send the received upstream event as-is downstream
https://bugzilla.gnome.org/show_bug.cgi?id=606689
2010-05-10 15:07:29 +02:00
Mark Nauwelaerts
d17388afa9 x264enc: adaptive x264 header NAL layout handling
Fixes #615410.
2010-04-19 10:39:34 +02:00
Mark Nauwelaerts
61643c7d89 x264enc: fix up avcC header construction
Fix off-by-one introduced by commit 35dd89951d
for BUILD_X264 < 76.

Also fixes #610089.
2010-04-13 16:55:58 +02:00
Mark Nauwelaerts
5fd1796fda x264enc: parameterize libx264 provided NAL layout in codec-data creation 2010-04-13 14:21:43 +02:00
Sebastian Dröge
c88c88de0d build: Add all kinds of compiler warning flags and fix the resulting warnings 2010-03-24 11:27:40 +01:00
Sebastian Dröge
43b366ce52 x264enc: Put pixel-aspect-ratio from input into the src pad caps
Fixes bug #612995.
2010-03-16 15:05:06 +01:00
Thiago Santos
96ee17e7b6 x264enc: Replace 'avc-sample' with 'avc' in caps
In the element and in its tests

Fixes #606662
2010-03-01 17:48:18 -03:00
Vittorio Palmisano
35dd89951d x264enc: fix up avcC header construction and playback by flash players
Fix off-by-one bug when constructing the avcC header chunk: we
wrote wrong profile info into the header. The first byte in the
SPS NAL we get from x264 is the nal type, not the profile_idc.

Also add some debug logging.

Fixes #610089.
2010-02-16 13:33:10 +00:00
Mark Nauwelaerts
8a1414694d x264enc: make use of Access Unit delimiters configurable
API: GstX264Enc:aud
2010-01-29 19:47:03 +01:00
Thiago Santos
c77dfa7b9f x264enc: Add stream-format to output caps
Adds stream-format to output caps of x264enc that
informs if the stream is in bytestream of avc format.

Fixes #606662
2010-01-13 10:17:44 -03:00
Olivier Crête
b7f37f9afb x264enc: Make upstream GstForceKeyUnit thread-safe
Also send the GstForceKeyUnit event downstream when an upstream on is received,
allowing muxers or payloaders to take appropriate actions.

https://bugzilla.gnome.org/show_bug.cgi?id=602556
2009-11-20 22:15:22 -05:00
Robert Swain
0a36965808 x264enc: Adapt to slightly modified x264 API
Fixes #599095.
2009-10-26 21:52:36 +01:00
Mark Nauwelaerts
8ef48af93b x264enc: conditionally adjust to new upstream API
Fixes #596517.
2009-10-01 19:01:27 +02:00
Tim-Philipp Müller
0e285b3d29 x264enc, rdtmanager: fix compilation with debugging disabled 2009-06-19 15:01:46 +01:00
Wim Taymans
0823e9fa14 [MOVED FROM BAD 28/28] x264enc: add multipass-cache-file property
Fixes #583627
2009-06-05 18:48:27 +01:00
Christian Schaller
bc8f9f9a8b [MOVED FROM BAD 25/28] Add ranks to various muxers and encoders in -bad 2009-06-05 18:48:26 +01:00
Stefan Kost
811ddb9cdc [MOVED FROM BAD 24/28] x264enc: add preset support
Add preset iface and a (dummy) preset file as a starting point.
2009-06-05 18:48:26 +01:00
Mark Nauwelaerts
cd86b39a94 [MOVED FROM BAD 23/28] x264enc: add some documentation on profile 2009-06-05 18:48:26 +01:00
Janin Kolenc
5a45501fc9 [MOVED FROM BAD 22/28] x264enc: add force keyframe event handling
Use the GstForceKeyUnit event to force a keyframe.
Fixes #578112.
2009-06-05 18:48:26 +01:00
Mark Nauwelaerts
ec8359fe54 [MOVED FROM BAD 21/28] ext/x264/gstx264enc.c: Use hyphen in property name, perform safety buffer size check prior to mem access, and some mo...
Original commit message from CVS:
* ext/x264/gstx264enc.c: (gst_x264_enc_class_init),
(gst_x264_enc_header_buf), (gst_x264_enc_encode_frame):
Use hyphen in property name, perform safety buffer size check
prior to mem access, and some more parentheses in macro.
2009-06-05 18:48:25 +01:00
Alessandro Decina
3b41060f6d [MOVED FROM BAD 20/28] ext/apexsink/Makefile.am: Link against -lgcrpyto for RSA_new and RSA_free.
Original commit message from CVS:
* ext/apexsink/Makefile.am:
Link against -lgcrpyto for RSA_new and RSA_free.
* ext/faac/gstfaac.c:
* ext/x264/gstx264enc.c:
Fix compiler warnings.
2009-06-05 18:48:25 +01:00
Mark Nauwelaerts
4ce646744c [MOVED FROM BAD 19/28] ext/x264/gstx264enc.c: Construct source caps in more conventional (and correct) manner.
Original commit message from CVS:
* ext/x264/gstx264enc.c: (gst_x264_enc_set_src_caps):
Construct source caps in more conventional (and correct) manner.
2009-06-05 18:48:25 +01:00
Mark Nauwelaerts
6c0833d099 [MOVED FROM BAD 17/28] ext/x264/gstx264enc.c: Adapt to slightly modified x264 API. Fixes #555238.
Original commit message from CVS:
* ext/x264/gstx264enc.c: (gst_x264_enc_init_encoder):
Adapt to slightly modified x264 API.  Fixes #555238.
2009-06-05 18:48:24 +01:00
Mark Nauwelaerts
8609794cb8 [MOVED FROM BAD 16/28] ext/x264/gstx264enc.*: Do not deal with duplicated input (timestamps). If needed, a generic element can do so.
Original commit message from CVS:
* ext/x264/gstx264enc.c: (gst_x264_enc_reset),
(gst_x264_enc_chain), (gst_x264_enc_encode_frame):
* ext/x264/gstx264enc.h:
Do not deal with duplicated input (timestamps).  If needed,
a generic element can do so.
Do not manipulate input timestamps on the way out,
since that shifts the timeline and A/V sync.
2009-06-05 18:48:24 +01:00
Mark Nauwelaerts
4e93235dcc [MOVED FROM BAD 15/28] docs/plugins/gst-plugins-bad-plugins.args: Integrate new properties into documentation.
Original commit message from CVS:
* docs/plugins/gst-plugins-bad-plugins.args:
Integrate new properties into documentation.
* ext/x264/gstx264enc.c: (gst_x264_enc_class_init),
(gst_x264_enc_init), (gst_x264_enc_init_encoder),
(gst_x264_enc_set_property), (gst_x264_enc_get_property):
Fix up API prior to eventual plugin move.
API: GstX264Enc:pass (provides more options, and changed to enum)
2009-06-05 18:48:24 +01:00
Mark Nauwelaerts
533dfb30c8 [MOVED FROM BAD 14/28] Add documentation and unit test for x264enc.
Original commit message from CVS:
* docs/plugins/Makefile.am:
* docs/plugins/gst-plugins-bad-plugins-docs.sgml:
* docs/plugins/gst-plugins-bad-plugins-sections.txt:
* ext/x264/gstx264enc.c:
* tests/check/Makefile.am:
* tests/check/elements/x264enc.c: (setup_x264enc),
(cleanup_x264enc), (GST_START_TEST), (x264enc_suite), (main):
Add documentation and unit test for x264enc.
2009-06-05 18:48:24 +01:00
Mark Nauwelaerts
d22b361df8 [MOVED FROM BAD 13/28] ext/x264/gstx264enc.c: Allocate some buffers in more adaptive and economical fashion.
Original commit message from CVS:
* ext/x264/gstx264enc.c: (gst_x264_enc_init),
(gst_x264_enc_header_buf), (gst_x264_enc_encode_frame):
Allocate some buffers in more adaptive and economical fashion.
2009-06-05 18:48:23 +01:00
Mark Nauwelaerts
a2ff3c6fde [MOVED FROM BAD 12/28] configure.ac: Check for sufficiently up-to-date x264 API.
Original commit message from CVS:
* configure.ac:
Check for sufficiently up-to-date x264 API.
* ext/x264/gstx264enc.c: (gst_x264_enc_pass_get_type),
(gst_x264_enc_base_init), (gst_x264_enc_class_init),
(gst_x264_enc_init), (gst_x264_enc_init_encoder),
(gst_x264_enc_set_property), (gst_x264_enc_get_property):
* ext/x264/gstx264enc.h:
Expose some more parameters of the x264 encoder as properties.
2009-06-05 18:48:23 +01:00
Mark Nauwelaerts
1b4c1fead0 [MOVED FROM BAD 11/28] ext/x264/gstx264enc.c: Coding style and layout; re-order some functions in more typical and natural flow.
Original commit message from CVS:
* ext/x264/gstx264enc.c: (gst_x264_enc_log_callback),
(gst_x264_enc_finalize), (gst_x264_enc_header_buf),
(gst_x264_enc_set_src_caps), (gst_x264_enc_sink_set_caps),
(gst_x264_enc_flush_frames):
Coding style and layout; re-order some functions in more
typical and natural flow.
2009-06-05 18:48:23 +01:00
Mark Nauwelaerts
c29de55ef2 [MOVED FROM BAD 10/28] ext/x264/: Use GQueue in stead of custom queue code.
Original commit message from CVS:
* ext/x264/Makefile.am:
* ext/x264/gstx264enc.c: (gst_x264_enc_set_src_caps),
(gst_x264_enc_sink_set_caps), (gst_x264_enc_init),
(gst_x264_enc_reset), (gst_x264_enc_finalize),
(gst_x264_enc_flush_frames), (gst_x264_enc_sink_event),
(gst_x264_enc_chain), (gst_x264_enc_encode_frame),
(gst_x264_enc_change_state), (gst_x264_enc_set_property):
* ext/x264/gstx264enc.h:
Use GQueue in stead of custom queue code.
Factorize flushing out encoder delayed frames.
Factorize initialization and state change reset.
2009-06-05 18:48:23 +01:00
Mark Nauwelaerts
88253ac70c [MOVED FROM BAD 08/28] ext/x264/: Use video format library and GST_WRITE_*_BE macros where applicable.
Original commit message from CVS:
* ext/x264/Makefile.am:
* ext/x264/gstx264enc.c: (gst_x264_enc_header_buf),
(gst_x264_enc_sink_set_caps), (gst_x264_enc_base_init),
(gst_x264_enc_class_init), (gst_x264_enc_log_callback),
(gst_x264_enc_init), (gst_x264_enc_init_encoder),
(gst_x264_enc_finalize), (gst_x264_enc_chain),
(gst_x264_enc_encode_frame), (plugin_init):
* ext/x264/gstx264enc.h:
Use video format library and GST_WRITE_*_BE macros where applicable.
Use finalize in stead of dispose.
Set up debug category and log callback.
2009-06-05 18:48:22 +01:00
Tim-Philipp Müller
9527af6c16 [MOVED FROM BAD 07/28] ext/x264/gstx264enc.c: Try harder not to crash when we get an EOS event but haven't set up the encoder yet (as may ha...
Original commit message from CVS:
* ext/x264/gstx264enc.c: (gst_x264_enc_header_buf),
(gst_x264_enc_sink_event), (gst_x264_enc_chain),
(gst_x264_enc_encode_frame):
Try harder not to crash when we get an EOS event but haven't set
up the encoder yet (as may happen when upstream errors out with
not-negotiated, for example). Also, always push the EOS event
downstream.
2009-06-05 18:48:22 +01:00
Wim Taymans
f5e3152262 [MOVED FROM BAD 06/28] ext/x264/gstx264enc.c: Fix caps memleak.
Original commit message from CVS:
* ext/x264/gstx264enc.c: (gst_x264_enc_set_src_caps):
Fix caps memleak.
2009-06-05 18:48:22 +01:00
Tim-Philipp Müller
64c7b47d97 [MOVED FROM BAD 05/28] ext/x264/gstx264enc.c: Fix build against the libx264 version that ships with debian stable.
Original commit message from CVS:
* ext/x264/gstx264enc.c:
Fix build against the libx264 version that ships with debian stable.
2009-06-05 18:48:22 +01:00
Stefan Kost
781d7efeff [MOVED FROM BAD 04/28] Massive leak fixing, plus code cleanups.
Original commit message from CVS:
* ext/audioresample/gstaudioresample.c:
* ext/x264/gstx264enc.c:
* gst/dvdspu/gstdvdspu.c:
* gst/dvdspu/gstdvdspu.h:
* gst/festival/gstfestival.c:
* gst/h264parse/gsth264parse.c:
* gst/mpegtsparse/mpegtspacketizer.c:
* gst/mpegtsparse/mpegtsparse.c:
* gst/multifile/gstmultifilesink.c:
* gst/multifile/gstmultifilesrc.c:
* gst/nuvdemux/gstnuvdemux.c:
* sys/dshowsrcwrapper/gstdshowaudiosrc.c:
* sys/dshowsrcwrapper/gstdshowvideosrc.c:
* sys/vcd/vcdsrc.c:
Massive leak fixing, plus code cleanups.
2009-06-05 18:48:21 +01:00
Stefan Kost
c25257e1b3 [MOVED FROM BAD 03/28] Add stdlib include (free, atoi, exit).
Original commit message from CVS:
* examples/app/appsrc_ex.c:
* examples/switch/switcher.c:
* ext/neon/gstneonhttpsrc.c:
* ext/timidity/gstwildmidi.c:
* ext/x264/gstx264enc.c:
* gst/mve/mveaudioenc.c: (mve_compress_audio):
* gst/rtpmanager/gstrtpclient.c:
* gst/rtpmanager/gstrtpjitterbuffer.c:
* gst/spectrum/demo-audiotest.c:
* gst/spectrum/demo-osssrc.c:
* sys/dvb/gstdvbsrc.c:
Add stdlib include (free, atoi, exit).
2009-06-05 18:48:21 +01:00
Stefan Kost
c4789e7c4a [MOVED FROM BAD 02/28] ext/x264/gstx264enc.c (gst_x264_enc_init_encoder): This needs a version check.
Original commit message from CVS:
* ext/x264/gstx264enc.c (gst_x264_enc_init_encoder):
This needs a version check.
* gst/bayer/Makefile.am:
Fix the build.
2009-06-05 18:48:21 +01:00
Michal Benes
bef885c84c [MOVED FROM BAD 01/28] Add libx264-based h264 encoder plugin (#421110). Probably doesn't handle 'odd' widths and heights correctly yet.
Original commit message from CVS:
Patch by: Michal Benes <michal.benes at itonis tv>
Patch by: Josef Zlomek <josef.zlomek at itonis tv>
* configure.ac:
* ext/Makefile.am:
* ext/x264/Makefile.am:
* ext/x264/gstx264enc.c: (gst_x264_enc_me_get_type),
(gst_x264_enc_analyse_get_type),
(gst_x264_enc_timestamp_queue_init),
(gst_x264_enc_timestamp_queue_free),
(gst_x264_enc_timestamp_queue_put),
(gst_x264_enc_timestamp_queue_get), (gst_x264_enc_header_buf),
(gst_x264_enc_set_src_caps), (gst_x264_enc_sink_set_caps),
(gst_x264_enc_base_init), (gst_x264_enc_class_init),
(gst_x264_enc_init), (gst_x264_enc_init_encoder),
(gst_x264_enc_close_encoder), (gst_x264_enc_dispose),
(gst_x264_enc_sink_event), (gst_x264_enc_chain),
(gst_x264_enc_encode_frame), (gst_x264_enc_change_state),
(gst_x264_enc_set_property), (gst_x264_enc_get_property),
(plugin_init):
* ext/x264/gstx264enc.h:
Add libx264-based h264 encoder plugin (#421110). Probably doesn't
handle 'odd' widths and heights correctly yet.
2009-06-05 18:48:21 +01:00