Commit graph

32 commits

Author SHA1 Message Date
Matej Knopp
43d6ca85a0 x264enc: Use gst_video_encoder_set_min_pts
This method replace the manual adjustment of PTS and DTS to avoid
negative DTS issues. Using this method will also update the segment so
we don't loos sync.

https://bugzilla.gnome.org/show_bug.cgi?id=740575
2015-06-11 10:29:25 -04:00
Jan Schmidt
c6958c158f x264enc: Add support for stereoscopic video
Provide new frame-packing property to directly set
x264enc frame packing, or pass through upstream settings

The explicit layout from the frame-packing property is
preferred over any info from the caps.
2015-06-11 11:01:38 +10:00
Nicolas Dufresne
698714fc97 x264enc: Shift both PTS and DTS to ensure positive timestamp
Currently we only shift DTS to compensate that we don't support negative
timestamp. This cause a problem that PTS is no longer >= DTS and may
make muxers live much harder. Instead, shift both PTS/DTS forward. Also
remove all the hack to handle this which seems the result of thinking libx264
is bugged.

https://bugzilla.gnome.org/show_bug.cgi?id=731351
2014-07-19 12:59:05 -04:00
Tim-Philipp Müller
9c690b2018 Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-03 20:40:37 +00:00
Mark Nauwelaerts
839e75d5d1 x264enc: handle possibly negative DTS provided by codec
... by arranging for an offset such that DTS == PTS for keyframes,
which is expected elsewhere to go along with semantics of PTS and DTS.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=679443
2012-09-07 17:38:40 +02:00
Sebastian Dröge
f664108a6e x264enc: Port to 0.11 again 2012-06-19 09:26:02 +01:00
Nicolas Dufresne
565b21aefb x264enc: Remove x264 backward compatibility support 2012-06-18 16:01:20 +01:00
Nicolas Dufresne
4fbb1a042e x264enc: Port to GstVideoEncoder baseclass
Conflicts:

	configure.ac
	ext/x264/gstx264enc.c
	ext/x264/gstx264enc.h

Back to 0.10 state, needs to be ported to 0.11 again.
2012-06-18 16:00:53 +01:00
Wim Taymans
6d371c89c1 x264enc: remove deprecated properties 2012-03-21 13:18:11 +01:00
Wim Taymans
49f4bc87d9 Merge branch 'master' into 0.11
Conflicts:
	ext/x264/gstx264enc.c
2012-02-10 17:00:33 +01:00
Alessandro Decina
4322fd0752 x264enc: implement force-key-unit API 2012-01-26 19:44:05 +01:00
Wim Taymans
29e0834191 x264enc: port to 0.11 2011-09-27 17:51:31 +02:00
Thiago Santos
7aafba6f82 x264enc: Select stream-format based on caps
Makes x264 select its stream-format based on what's available
on caps, the user selected option will be chosen as a fallback
when both options are available.

https://bugzilla.gnome.org/show_bug.cgi?id=644233
2011-07-13 14:04:53 -04:00
Olivier Crête
e27dda7c62 x264: Use profile and level from caps
Enforces the profile and level from the downstream caps, also
sets them on the fixated caps

https://bugzilla.gnome.org/show_bug.cgi?id=644233
2011-07-12 16:51:50 -04:00
Olivier Crête
62e35a6b40 x264enc: Allow changing the bitrate and quantitizers dynamically
https://bugzilla.gnome.org/show_bug.cgi?id=621663
2011-03-29 20:08:40 -04:00
Robert Swain
b27ce43ab8 x264enc: Add speed-preset and [psy-]tuning properties
Use of a rate control method (pass, bitrate, quantizer, etc properties), a
preset and possibly a profile and/or tuning are now the recommended way to
configure x264 through x264enc.

If a preset/tuning are specified then these will define the default values and
the property defaults will be ignored. After this the option-string property is
applied, followed by the user-set properties, fast first pass restrictions and
finally the profile restrictions.

Addresses part of bug #607798
2010-07-25 13:39:44 +02:00
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
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
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
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
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
Mark Nauwelaerts
8a1414694d x264enc: make use of Access Unit delimiters configurable
API: GstX264Enc:aud
2010-01-29 19:47:03 +01: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
Wim Taymans
0823e9fa14 [MOVED FROM BAD 28/28] x264enc: add multipass-cache-file property
Fixes #583627
2009-06-05 18:48:27 +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
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
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
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
a0ff7b6ca8 [MOVED FROM BAD 09/28] Use configure-generated _stdint.h.
Original commit message from CVS:
* ext/x264/gstx264enc.h:
* sys/fbdev/gstfbdevsink.c:
Use configure-generated _stdint.h.
2009-06-05 18:48:22 +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
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