mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-19 06:46:38 +00:00
Merge branch 'master' into 0.11
Conflicts: gst-libs/gst/video/convertframe.c
This commit is contained in:
commit
a87c021237
36 changed files with 500 additions and 288 deletions
|
@ -189,6 +189,7 @@
|
|||
<xi:include href="xml/gsttagvorbis.xml" />
|
||||
<xi:include href="xml/gsttagid3.xml" />
|
||||
<xi:include href="xml/gsttagxmp.xml" />
|
||||
<xi:include href="xml/gsttagxmpwriter.xml" />
|
||||
<xi:include href="xml/gsttagdemux.xml" />
|
||||
<xi:include href="xml/gsttaglanguagecodes.xml" />
|
||||
</chapter>
|
||||
|
@ -202,6 +203,7 @@
|
|||
flags.
|
||||
</para>
|
||||
<xi:include href="xml/gstpbutils.xml" />
|
||||
<xi:include href="xml/gstpluginsbaseversion.xml" />
|
||||
<xi:include href="xml/gstpbutilscodecutils.xml" />
|
||||
<xi:include href="xml/gstpbutilsdescriptions.xml" />
|
||||
<xi:include href="xml/gstpbutilsmissingplugins.xml" />
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<FILE>gstappsrc</FILE>
|
||||
<TITLE>appsrc</TITLE>
|
||||
<INCLUDE>gst/app/gstappsrc.h</INCLUDE>
|
||||
GstAppSrc
|
||||
GstAppStreamType
|
||||
gst_app_src_set_caps
|
||||
gst_app_src_get_caps
|
||||
|
@ -35,7 +34,9 @@ GST_APP_BUFFER_CLASS
|
|||
GST_IS_APP_BUFFER
|
||||
GST_IS_APP_BUFFER_CLASS
|
||||
GST_TYPE_APP_BUFFER
|
||||
GST_TYPE_APP_STREAM_TYPE
|
||||
<SUBSECTION Private>
|
||||
GstAppSrc
|
||||
GstAppSrcPrivate
|
||||
GstAppBuffer
|
||||
GstAppBufferClass
|
||||
|
@ -48,7 +49,6 @@ gst_app_buffer_new
|
|||
<FILE>gstappsink</FILE>
|
||||
<TITLE>appsink</TITLE>
|
||||
<INCLUDE>gst/app/gstappsink.h</INCLUDE>
|
||||
GstAppSink
|
||||
gst_app_sink_set_caps
|
||||
gst_app_sink_get_caps
|
||||
gst_app_sink_is_eos
|
||||
|
@ -64,6 +64,7 @@ gst_app_sink_pull_buffer_list
|
|||
GstAppSinkCallbacks
|
||||
gst_app_sink_set_callbacks
|
||||
<SUBSECTION Standard>
|
||||
GstAppSink
|
||||
GstAppSinkPrivate
|
||||
GstAppSinkClass
|
||||
GST_APP_SINK
|
||||
|
@ -859,6 +860,22 @@ gst_netbuffer_get_type
|
|||
<SECTION>
|
||||
<FILE>gstriff</FILE>
|
||||
<INCLUDE>gst/riff/riff-media.h</INCLUDE>
|
||||
gst_riff_create_audio_caps
|
||||
gst_riff_create_audio_template_caps
|
||||
gst_riff_create_iavs_caps
|
||||
gst_riff_create_iavs_template_caps
|
||||
gst_riff_create_video_caps
|
||||
gst_riff_create_video_template_caps
|
||||
gst_riff_init
|
||||
gst_riff_parse_chunk
|
||||
gst_riff_parse_file_header
|
||||
gst_riff_parse_info
|
||||
gst_riff_parse_strf_auds
|
||||
gst_riff_parse_strf_iavs
|
||||
gst_riff_parse_strf_vids
|
||||
gst_riff_parse_strh
|
||||
gst_riff_read_chunk
|
||||
<SUBSECTION Standard>
|
||||
GST_RIFF_00
|
||||
GST_RIFF_0021
|
||||
GST_RIFF_0031
|
||||
|
@ -1043,28 +1060,12 @@ GST_RIFF_yuy2
|
|||
GST_RIFF_yv12
|
||||
|
||||
gst_riff_acid
|
||||
gst_riff_create_audio_caps
|
||||
gst_riff_create_audio_template_caps
|
||||
gst_riff_create_iavs_caps
|
||||
gst_riff_create_iavs_template_caps
|
||||
gst_riff_create_video_caps
|
||||
gst_riff_create_video_template_caps
|
||||
gst_riff_dmlh
|
||||
gst_riff_index_entry
|
||||
gst_riff_init
|
||||
gst_riff_parse_chunk
|
||||
gst_riff_parse_file_header
|
||||
gst_riff_parse_info
|
||||
gst_riff_parse_strf_auds
|
||||
gst_riff_parse_strf_iavs
|
||||
gst_riff_parse_strf_vids
|
||||
gst_riff_parse_strh
|
||||
gst_riff_read_chunk
|
||||
gst_riff_strf_auds
|
||||
gst_riff_strf_iavs
|
||||
gst_riff_strf_vids
|
||||
gst_riff_strh
|
||||
<SUBSECTION Standard>
|
||||
</SECTION>
|
||||
|
||||
|
||||
|
@ -1392,6 +1393,7 @@ gst_rtp_buffer_list_add_extension_twobytes_header
|
|||
<FILE>gstrtspdefs</FILE>
|
||||
<INCLUDE>gst/rtsp/gstrtspdefs.h</INCLUDE>
|
||||
GST_RTSP_CHECK
|
||||
GST_RTSP_AUTH_MAX
|
||||
GstRTSPEvent
|
||||
GstRTSPResult
|
||||
GstRTSPFamily
|
||||
|
@ -1399,7 +1401,6 @@ GstRTSPState
|
|||
GstRTSPVersion
|
||||
GstRTSPMethod
|
||||
GstRTSPAuthMethod
|
||||
GST_RTSP_AUTH_MAX
|
||||
GstRTSPHeaderField
|
||||
GstRTSPStatusCode
|
||||
gst_rtsp_strresult
|
||||
|
@ -1739,6 +1740,7 @@ GST_TAG_CAPTURING_FLASH_FIRED
|
|||
GST_TAG_CAPTURING_FLASH_MODE
|
||||
GST_TAG_CAPTURING_METERING_MODE
|
||||
GST_TAG_CAPTURING_SOURCE
|
||||
GST_TAG_CAPTURING_EXPOSURE_COMPENSATION
|
||||
GST_TAG_IMAGE_HORIZONTAL_PPI
|
||||
GST_TAG_IMAGE_VERTICAL_PPI
|
||||
gst_tag_register_musicbrainz_tags
|
||||
|
@ -1786,6 +1788,8 @@ gst_tag_list_add_id3_image
|
|||
<INCLUDE>gst/tag/tag.h</INCLUDE>
|
||||
gst_tag_list_from_xmp_buffer
|
||||
gst_tag_list_to_xmp_buffer
|
||||
gst_tag_list_to_xmp_buffer_full
|
||||
gst_tag_xmp_list_schemas
|
||||
<SUBSECTION Standard>
|
||||
</SECTION>
|
||||
|
||||
|
@ -1820,7 +1824,6 @@ gst_tag_demux_result_get_type
|
|||
<SECTION>
|
||||
<FILE>gsttaglanguagecodes</FILE>
|
||||
<INCLUDE>gst/tag/tag.h</INCLUDE>
|
||||
<SUBSECTION>
|
||||
gst_tag_get_language_codes
|
||||
gst_tag_get_language_name
|
||||
gst_tag_get_language_code
|
||||
|
@ -1829,6 +1832,26 @@ gst_tag_get_language_code_iso_639_2B
|
|||
gst_tag_get_language_code_iso_639_2T
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gsttagxmpwriter</FILE>
|
||||
gst_tag_xmp_writer_add_all_schemas
|
||||
gst_tag_xmp_writer_add_schema
|
||||
gst_tag_xmp_writer_has_schema
|
||||
gst_tag_xmp_writer_remove_schema
|
||||
gst_tag_xmp_writer_remove_all_schemas
|
||||
gst_tag_xmp_writer_tag_list_to_xmp_buffer
|
||||
<SUBSECTION Standard>
|
||||
GstTagXmpWriter
|
||||
GstTagXmpWriterInterface
|
||||
GST_TYPE_TAG_XMP_WRITER
|
||||
GST_TAG_XMP_WRITER
|
||||
GST_TAG_XMP_WRITER_INTERFACE
|
||||
GST_IS_TAG_XMP_WRITER
|
||||
GST_IS_TAG_XMP_WRITER_INTERFACE
|
||||
GST_TAG_XMP_WRITER_GET_INTERFACE
|
||||
gst_tag_xmp_writer_get_type
|
||||
</SECTION>
|
||||
|
||||
# base utils
|
||||
|
||||
<SECTION>
|
||||
|
@ -1836,6 +1859,11 @@ gst_tag_get_language_code_iso_639_2T
|
|||
<INCLUDE>gst/pbutils/pbutils.h</INCLUDE>
|
||||
<SUBSECTION>
|
||||
gst_pb_utils_init
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gstpluginsbaseversion</FILE>
|
||||
<INCLUDE>gst/pbutils/gstpluginsbaseversion.h</INCLUDE>
|
||||
<SUBSECTION>
|
||||
GST_PLUGINS_BASE_VERSION_MAJOR
|
||||
GST_PLUGINS_BASE_VERSION_MINOR
|
||||
|
@ -2054,6 +2082,20 @@ GST_VIDEO_CAPS_BGR_16
|
|||
GST_VIDEO_CAPS_RGB8_PALETTED
|
||||
GST_VIDEO_CAPS_GRAY8
|
||||
GST_VIDEO_CAPS_GRAY16
|
||||
GST_VIDEO_CAPS_ARGB_64
|
||||
GST_VIDEO_CAPS_r210
|
||||
GST_VIDEO_COMP1_MASK_15
|
||||
GST_VIDEO_COMP1_MASK_15_INT
|
||||
GST_VIDEO_COMP1_MASK_16
|
||||
GST_VIDEO_COMP1_MASK_16_INT
|
||||
GST_VIDEO_COMP2_MASK_15
|
||||
GST_VIDEO_COMP2_MASK_15_INT
|
||||
GST_VIDEO_COMP2_MASK_16
|
||||
GST_VIDEO_COMP2_MASK_16_INT
|
||||
GST_VIDEO_COMP3_MASK_15
|
||||
GST_VIDEO_COMP3_MASK_15_INT
|
||||
GST_VIDEO_COMP3_MASK_16
|
||||
GST_VIDEO_COMP3_MASK_16_INT
|
||||
GST_VIDEO_FPS_RANGE
|
||||
GST_VIDEO_GREEN_MASK_15
|
||||
GST_VIDEO_GREEN_MASK_15_INT
|
||||
|
@ -2071,12 +2113,15 @@ GstVideoFormat
|
|||
gst_video_calculate_display_ratio
|
||||
gst_video_frame_rate
|
||||
gst_video_get_size
|
||||
gst_video_get_size_from_caps
|
||||
gst_video_format_convert
|
||||
gst_video_format_new_caps
|
||||
gst_video_format_new_caps_interlaced
|
||||
gst_video_format_new_template_caps
|
||||
gst_video_format_get_component_height
|
||||
gst_video_format_get_component_offset
|
||||
gst_video_format_get_component_width
|
||||
gst_video_format_get_component_depth
|
||||
gst_video_format_get_pixel_stride
|
||||
gst_video_format_get_row_stride
|
||||
gst_video_format_get_size
|
||||
|
|
|
@ -17,22 +17,6 @@
|
|||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* SECTION:element-appsink
|
||||
*
|
||||
* Appsink is a sink plugin that supports many different methods for making
|
||||
* the application get a handle on the GStreamer data in a pipeline. Unlike
|
||||
* most GStreamer elements, Appsink provides external API functions.
|
||||
*
|
||||
* For the documentation of the API, please see the
|
||||
* <link linkend="gst-plugins-base-libs-appsink">libgstapp</link> section in
|
||||
* the GStreamer Plugins Base Libraries documentation.
|
||||
*
|
||||
* Since: 0.10.22
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* SECTION:gstappsink
|
||||
* @short_description: Easy way for applications to extract buffers from a
|
||||
|
@ -281,10 +265,10 @@ gst_app_sink_class_init (GstAppSinkClass * klass)
|
|||
* GstAppSink::new-preroll:
|
||||
* @appsink: the appsink element that emited the signal
|
||||
*
|
||||
* Signal that a new preroll buffer is available.
|
||||
* Signal that a new preroll buffer is available.
|
||||
*
|
||||
* This signal is emited from the steaming thread and only when the
|
||||
* "emit-signals" property is %TRUE.
|
||||
* "emit-signals" property is %TRUE.
|
||||
*
|
||||
* The new preroll buffer can be retrieved with the "pull-preroll" action
|
||||
* signal or gst_app_sink_pull_preroll() either from this signal callback
|
||||
|
@ -304,7 +288,7 @@ gst_app_sink_class_init (GstAppSinkClass * klass)
|
|||
* Signal that a new buffer is available.
|
||||
*
|
||||
* This signal is emited from the steaming thread and only when the
|
||||
* "emit-signals" property is %TRUE.
|
||||
* "emit-signals" property is %TRUE.
|
||||
*
|
||||
* The new buffer can be retrieved with the "pull-buffer" action
|
||||
* signal or gst_app_sink_pull_buffer() either from this signal callback
|
||||
|
@ -324,7 +308,7 @@ gst_app_sink_class_init (GstAppSinkClass * klass)
|
|||
* Signal that a new bufferlist is available.
|
||||
*
|
||||
* This signal is emited from the steaming thread and only when the
|
||||
* "emit-signals" property is %TRUE.
|
||||
* "emit-signals" property is %TRUE.
|
||||
*
|
||||
* The new buffer can be retrieved with the "pull-buffer-list" action
|
||||
* signal or gst_app_sink_pull_buffer_list() either from this signal callback
|
||||
|
@ -354,10 +338,10 @@ gst_app_sink_class_init (GstAppSinkClass * klass)
|
|||
* when calling gst_app_sink_pull_buffer() or the "pull-buffer" action signal.
|
||||
*
|
||||
* If an EOS event was received before any buffers, this function returns
|
||||
* %NULL. Use gst_app_sink_is_eos () to check for the EOS condition.
|
||||
* %NULL. Use gst_app_sink_is_eos () to check for the EOS condition.
|
||||
*
|
||||
* This function blocks until a preroll buffer or EOS is received or the appsink
|
||||
* element is set to the READY/NULL state.
|
||||
* element is set to the READY/NULL state.
|
||||
*
|
||||
* Returns: a #GstBuffer or NULL when the appsink is stopped or EOS.
|
||||
*/
|
||||
|
@ -371,11 +355,11 @@ gst_app_sink_class_init (GstAppSinkClass * klass)
|
|||
* @appsink: the appsink element to emit this signal on
|
||||
*
|
||||
* This function blocks until a buffer or EOS becomes available or the appsink
|
||||
* element is set to the READY/NULL state.
|
||||
* element is set to the READY/NULL state.
|
||||
*
|
||||
* This function will only return buffers when the appsink is in the PLAYING
|
||||
* state. All rendered buffers will be put in a queue so that the application
|
||||
* can pull buffers at its own rate.
|
||||
* can pull buffers at its own rate.
|
||||
*
|
||||
* Note that when the application does not pull buffers fast enough, the
|
||||
* queued buffers could consume a lot of memory, especially when dealing with
|
||||
|
@ -383,7 +367,7 @@ gst_app_sink_class_init (GstAppSinkClass * klass)
|
|||
* the "drop" and "max-buffers" properties.
|
||||
*
|
||||
* If an EOS event was received before any buffers, this function returns
|
||||
* %NULL. Use gst_app_sink_is_eos () to check for the EOS condition.
|
||||
* %NULL. Use gst_app_sink_is_eos () to check for the EOS condition.
|
||||
*
|
||||
* Returns: a #GstBuffer or NULL when the appsink is stopped or EOS.
|
||||
*/
|
||||
|
@ -397,11 +381,11 @@ gst_app_sink_class_init (GstAppSinkClass * klass)
|
|||
* @appsink: the appsink element to emit this signal on
|
||||
*
|
||||
* This function blocks until a buffer list or EOS becomes available or the appsink
|
||||
* element is set to the READY/NULL state.
|
||||
* element is set to the READY/NULL state.
|
||||
*
|
||||
* This function will only return bufferlists when the appsink is in the PLAYING
|
||||
* state. All rendered bufferlists will be put in a queue so that the application
|
||||
* can pull bufferlists at its own rate.
|
||||
* can pull bufferlists at its own rate.
|
||||
*
|
||||
* Note that when the application does not pull bufferlists fast enough, the
|
||||
* queued bufferlists could consume a lot of memory, especially when dealing with
|
||||
|
@ -409,7 +393,7 @@ gst_app_sink_class_init (GstAppSinkClass * klass)
|
|||
* the "drop" and "max-buffers" properties.
|
||||
*
|
||||
* If an EOS event was received before any buffers, this function returns
|
||||
* %NULL. Use gst_app_sink_is_eos () to check for the EOS condition.
|
||||
* %NULL. Use gst_app_sink_is_eos () to check for the EOS condition.
|
||||
*
|
||||
* Returns: a #GstBufferList or NULL when the appsink is stopped or EOS.
|
||||
*/
|
||||
|
@ -924,7 +908,7 @@ not_started:
|
|||
* Set the capabilities on the appsink element. This function takes
|
||||
* a copy of the caps structure. After calling this method, the sink will only
|
||||
* accept caps that match @caps. If @caps is non-fixed, you must check the caps
|
||||
* on the buffers to get the actual used caps.
|
||||
* on the buffers to get the actual used caps.
|
||||
*
|
||||
* Since: 0.10.22
|
||||
*/
|
||||
|
@ -1209,10 +1193,10 @@ gst_app_sink_get_drop (GstAppSink * appsink)
|
|||
* when calling gst_app_sink_pull_buffer().
|
||||
*
|
||||
* If an EOS event was received before any buffers, this function returns
|
||||
* %NULL. Use gst_app_sink_is_eos () to check for the EOS condition.
|
||||
* %NULL. Use gst_app_sink_is_eos () to check for the EOS condition.
|
||||
*
|
||||
* This function blocks until a preroll buffer or EOS is received or the appsink
|
||||
* element is set to the READY/NULL state.
|
||||
* element is set to the READY/NULL state.
|
||||
*
|
||||
* Returns: a #GstBuffer or NULL when the appsink is stopped or EOS.
|
||||
*
|
||||
|
@ -1271,7 +1255,7 @@ not_started:
|
|||
* @appsink: a #GstAppSink
|
||||
*
|
||||
* This function blocks until a buffer or EOS becomes available or the appsink
|
||||
* element is set to the READY/NULL state.
|
||||
* element is set to the READY/NULL state.
|
||||
*
|
||||
* This function will only return buffers when the appsink is in the PLAYING
|
||||
* state. All rendered buffers will be put in a queue so that the application
|
||||
|
@ -1280,7 +1264,7 @@ not_started:
|
|||
* especially when dealing with raw video frames.
|
||||
*
|
||||
* If an EOS event was received before any buffers, this function returns
|
||||
* %NULL. Use gst_app_sink_is_eos () to check for the EOS condition.
|
||||
* %NULL. Use gst_app_sink_is_eos () to check for the EOS condition.
|
||||
*
|
||||
* Returns: a #GstBuffer or NULL when the appsink is stopped or EOS.
|
||||
*
|
||||
|
@ -1299,7 +1283,7 @@ gst_app_sink_pull_buffer (GstAppSink * appsink)
|
|||
* @appsink: a #GstAppSink
|
||||
*
|
||||
* This function blocks until a buffer list or EOS becomes available or the
|
||||
* appsink element is set to the READY/NULL state.
|
||||
* appsink element is set to the READY/NULL state.
|
||||
*
|
||||
* This function will only return buffer lists when the appsink is in the
|
||||
* PLAYING state. All rendered buffer lists will be put in a queue so that
|
||||
|
@ -1309,7 +1293,7 @@ gst_app_sink_pull_buffer (GstAppSink * appsink)
|
|||
* video frames.
|
||||
*
|
||||
* If an EOS event was received before any buffer lists, this function returns
|
||||
* %NULL. Use gst_app_sink_is_eos () to check for the EOS condition.
|
||||
* %NULL. Use gst_app_sink_is_eos () to check for the EOS condition.
|
||||
*
|
||||
* Returns: a #GstBufferList or NULL when the appsink is stopped or EOS.
|
||||
*/
|
||||
|
|
|
@ -17,21 +17,6 @@
|
|||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* SECTION:element-appsrc
|
||||
*
|
||||
* The appsrc element can be used by applications to insert data into a
|
||||
* GStreamer pipeline. Unlike most GStreamer elements, Appsrc provides
|
||||
* external API functions.
|
||||
*
|
||||
* For the documentation of the API, please see the
|
||||
* <link linkend="gst-plugins-base-libs-appsrc">libgstapp</link> section in the
|
||||
* GStreamer Plugins Base Libraries documentation.
|
||||
*
|
||||
* Since: 0.10.22
|
||||
*/
|
||||
|
||||
/**
|
||||
* SECTION:gstappsrc
|
||||
* @short_description: Easy way for applications to inject buffers into a
|
||||
|
@ -95,7 +80,7 @@
|
|||
* For the stream and seekable modes, setting this property is optional but
|
||||
* recommended.
|
||||
*
|
||||
* When the application is finished pushing data into appsrc, it should call
|
||||
* When the application is finished pushing data into appsrc, it should call
|
||||
* gst_app_src_end_of_stream() or emit the end-of-stream action signal. After
|
||||
* this call, no more buffers can be pushed into appsrc until a flushing seek
|
||||
* happened or the state of the appsrc has gone through READY.
|
||||
|
@ -467,7 +452,7 @@ gst_app_src_class_init (GstAppSrcClass * klass)
|
|||
* GstAppSrc::end-of-stream:
|
||||
* @appsrc: the appsrc
|
||||
*
|
||||
* Notify @appsrc that no more buffer are available.
|
||||
* Notify @appsrc that no more buffer are available.
|
||||
*/
|
||||
gst_app_src_signals[SIGNAL_END_OF_STREAM] =
|
||||
g_signal_new ("end-of-stream", G_TYPE_FROM_CLASS (klass),
|
||||
|
@ -1063,7 +1048,7 @@ seek_error:
|
|||
* a copy of the caps structure. After calling this method, the source will
|
||||
* only produce caps that match @caps. @caps must be fixed and the caps on the
|
||||
* buffers must match the caps or left NULL.
|
||||
*
|
||||
*
|
||||
* Since: 0.10.22
|
||||
*/
|
||||
void
|
||||
|
@ -1096,7 +1081,7 @@ gst_app_src_set_caps (GstAppSrc * appsrc, const GstCaps * caps)
|
|||
* Get the configured caps on @appsrc.
|
||||
*
|
||||
* Returns: the #GstCaps produced by the source. gst_caps_unref() after usage.
|
||||
*
|
||||
*
|
||||
* Since: 0.10.22
|
||||
*/
|
||||
GstCaps *
|
||||
|
@ -1124,8 +1109,8 @@ gst_app_src_get_caps (GstAppSrc * appsrc)
|
|||
* @size: the size to set
|
||||
*
|
||||
* Set the size of the stream in bytes. A value of -1 means that the size is
|
||||
* not known.
|
||||
*
|
||||
* not known.
|
||||
*
|
||||
* Since: 0.10.22
|
||||
*/
|
||||
void
|
||||
|
@ -1148,10 +1133,10 @@ gst_app_src_set_size (GstAppSrc * appsrc, gint64 size)
|
|||
* @appsrc: a #GstAppSrc
|
||||
*
|
||||
* Get the size of the stream in bytes. A value of -1 means that the size is
|
||||
* not known.
|
||||
* not known.
|
||||
*
|
||||
* Returns: the size of the stream previously set with gst_app_src_set_size();
|
||||
*
|
||||
*
|
||||
* Since: 0.10.22
|
||||
*/
|
||||
gint64
|
||||
|
@ -1180,8 +1165,8 @@ gst_app_src_get_size (GstAppSrc * appsrc)
|
|||
* Set the stream type on @appsrc. For seekable streams, the "seek" signal must
|
||||
* be connected to.
|
||||
*
|
||||
* A stream_type stream
|
||||
*
|
||||
* A stream_type stream
|
||||
*
|
||||
* Since: 0.10.22
|
||||
*/
|
||||
void
|
||||
|
@ -1207,7 +1192,7 @@ gst_app_src_set_stream_type (GstAppSrc * appsrc, GstAppStreamType type)
|
|||
* with gst_app_src_set_stream_type().
|
||||
*
|
||||
* Returns: the stream type.
|
||||
*
|
||||
*
|
||||
* Since: 0.10.22
|
||||
*/
|
||||
GstAppStreamType
|
||||
|
@ -1236,7 +1221,7 @@ gst_app_src_get_stream_type (GstAppSrc * appsrc)
|
|||
* Set the maximum amount of bytes that can be queued in @appsrc.
|
||||
* After the maximum amount of bytes are queued, @appsrc will emit the
|
||||
* "enough-data" signal.
|
||||
*
|
||||
*
|
||||
* Since: 0.10.22
|
||||
*/
|
||||
void
|
||||
|
@ -1265,7 +1250,7 @@ gst_app_src_set_max_bytes (GstAppSrc * appsrc, guint64 max)
|
|||
* Get the maximum amount of bytes that can be queued in @appsrc.
|
||||
*
|
||||
* Returns: The maximum amount of bytes that can be queued.
|
||||
*
|
||||
*
|
||||
* Since: 0.10.22
|
||||
*/
|
||||
guint64
|
||||
|
@ -1319,7 +1304,7 @@ gst_app_src_set_latencies (GstAppSrc * appsrc, gboolean do_min, guint64 min,
|
|||
*
|
||||
* Configure the @min and @max latency in @src. If @min is set to -1, the
|
||||
* default latency calculations for pseudo-live sources will be used.
|
||||
*
|
||||
*
|
||||
* Since: 0.10.22
|
||||
*/
|
||||
void
|
||||
|
@ -1335,7 +1320,7 @@ gst_app_src_set_latency (GstAppSrc * appsrc, guint64 min, guint64 max)
|
|||
* @max: the min latency
|
||||
*
|
||||
* Retrieve the min and max latencies in @min and @max respectively.
|
||||
*
|
||||
*
|
||||
* Since: 0.10.22
|
||||
*/
|
||||
void
|
||||
|
@ -1511,7 +1496,7 @@ eos:
|
|||
* Returns: #GST_FLOW_OK when the buffer was successfuly queued.
|
||||
* #GST_FLOW_WRONG_STATE when @appsrc is not PAUSED or PLAYING.
|
||||
* #GST_FLOW_UNEXPECTED when EOS occured.
|
||||
*
|
||||
*
|
||||
* Since: 0.10.22
|
||||
*/
|
||||
GstFlowReturn
|
||||
|
@ -1537,7 +1522,7 @@ gst_app_src_push_buffer_action (GstAppSrc * appsrc, GstBuffer * buffer)
|
|||
*
|
||||
* Returns: #GST_FLOW_OK when the EOS was successfuly queued.
|
||||
* #GST_FLOW_WRONG_STATE when @appsrc is not PAUSED or PLAYING.
|
||||
*
|
||||
*
|
||||
* Since: 0.10.22
|
||||
*/
|
||||
GstFlowReturn
|
||||
|
@ -1550,7 +1535,7 @@ gst_app_src_end_of_stream (GstAppSrc * appsrc)
|
|||
priv = appsrc->priv;
|
||||
|
||||
g_mutex_lock (priv->mutex);
|
||||
/* can't accept buffers when we are flushing. We can accept them when we are
|
||||
/* can't accept buffers when we are flushing. We can accept them when we are
|
||||
* EOS although it will not do anything. */
|
||||
if (priv->flushing)
|
||||
goto flushing;
|
||||
|
|
|
@ -60,14 +60,13 @@ typedef GstClockTime (*GstAudioClockGetTimeFunc) (GstClock *clock, gpointer user
|
|||
|
||||
/**
|
||||
* GstAudioClock:
|
||||
* @clock: parent #GstSystemClock
|
||||
*
|
||||
* Opaque #GstAudioClock.
|
||||
*/
|
||||
struct _GstAudioClock {
|
||||
GstSystemClock clock;
|
||||
|
||||
/* --- protected --- */
|
||||
/*< protected >*/
|
||||
GstAudioClockGetTimeFunc func;
|
||||
gpointer user_data;
|
||||
|
||||
|
|
|
@ -47,7 +47,6 @@ typedef struct _GstAudioFilterClass GstAudioFilterClass;
|
|||
|
||||
/**
|
||||
* GstAudioFilter:
|
||||
* @basetransform: Element parent class
|
||||
*
|
||||
* Base class for audio filters with the same format for input and output.
|
||||
*
|
||||
|
|
|
@ -22,11 +22,11 @@
|
|||
/**
|
||||
* SECTION:gstaudioiec61937
|
||||
* @short_description: Utility functions for IEC 61937 payloading
|
||||
* @since: 0.10.35
|
||||
*
|
||||
* This module contains some helper functions for encapsulating various
|
||||
* audio formats in IEC 61937 headers and padding.
|
||||
*
|
||||
* Since: 0.10.35
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
@ -60,12 +60,14 @@ caps_get_string_field (const GstCaps * caps, const gchar * field)
|
|||
}
|
||||
|
||||
/**
|
||||
* gst_audio_iec61937_frame_size
|
||||
* @type: the type of data to be payloaded as a #GstBufferFormatType
|
||||
* gst_audio_iec61937_frame_size:
|
||||
* @spec: the ringbufer spec
|
||||
*
|
||||
* Returns 0 if the given @type is not supported or cannot be payloaded, else
|
||||
* returns the size of the buffer expected by gst_audio_iec61937_payload() for
|
||||
* payloading @type.
|
||||
* Calculated the size of the buffer expected by gst_audio_iec61937_payload() for
|
||||
* payloading type from @spec.
|
||||
*
|
||||
* Returns: the size or 0 if the given @type is not supported or cannot be
|
||||
* payloaded.
|
||||
*
|
||||
* Since: 0.10.35
|
||||
*/
|
||||
|
@ -128,19 +130,19 @@ gst_audio_iec61937_frame_size (const GstRingBufferSpec * spec)
|
|||
}
|
||||
|
||||
/**
|
||||
* gst_audio_iec61937_payload
|
||||
* gst_audio_iec61937_payload:
|
||||
* @src: a buffer containing the data to payload
|
||||
* @src_n: size of @src in bytes
|
||||
* @dst: the destination buffer to store the payloaded contents in. Should not
|
||||
* overlap with @src
|
||||
* @dst_n: size of @dst in bytes
|
||||
* @type: the type of data in @src
|
||||
* @spec: the ringbufer spec for @src
|
||||
*
|
||||
* Payloads @src in the form specified by IEC 61937 for @type and stores
|
||||
* the result in @dst. @src must contain exactly one frame of data and the
|
||||
* frame is not checked for errors.
|
||||
* Payloads @src in the form specified by IEC 61937 for the type from @spec and
|
||||
* stores the result in @dst. @src must contain exactly one frame of data and
|
||||
* the frame is not checked for errors.
|
||||
*
|
||||
* Returns: transfer-full: #TRUE if the payloading was successful, #FALSE
|
||||
* Returns: transfer-full: %TRUE if the payloading was successful, %FALSE
|
||||
* otherwise.
|
||||
*
|
||||
* Since: 0.10.35
|
||||
|
|
|
@ -18,13 +18,6 @@
|
|||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/**
|
||||
* SECTION:gstaudioiec61937
|
||||
* @short_description: Utility functions for IEC 61937 payloading
|
||||
*
|
||||
* This module contains some helper functions for encapsulating various
|
||||
* audio formats in IEC 61937 headers and padding.
|
||||
*/
|
||||
|
||||
#ifndef __GST_AUDIO_IEC61937_H__
|
||||
#define __GST_AUDIO_IEC61937_H__
|
||||
|
|
|
@ -40,7 +40,6 @@ typedef struct _GstAudioSrcClass GstAudioSrcClass;
|
|||
|
||||
/**
|
||||
* GstAudioSrc:
|
||||
* @element: parent class
|
||||
*
|
||||
* Base class for simple audio sources.
|
||||
*/
|
||||
|
|
|
@ -704,6 +704,7 @@ gst_base_audio_sink_setcaps (GstBaseSink * bsink, GstCaps * caps)
|
|||
GstBaseAudioSink *sink = GST_BASE_AUDIO_SINK (bsink);
|
||||
GstRingBufferSpec *spec;
|
||||
GstClockTime now;
|
||||
GstClockTime crate_num, crate_denom;
|
||||
|
||||
if (!sink->ringbuffer)
|
||||
return FALSE;
|
||||
|
@ -745,6 +746,13 @@ gst_base_audio_sink_setcaps (GstBaseSink * bsink, GstCaps * caps)
|
|||
gst_ring_buffer_activate (sink->ringbuffer, TRUE);
|
||||
}
|
||||
|
||||
/* due to possible changes in the spec file we should recalibrate the clock */
|
||||
gst_clock_get_calibration (sink->provided_clock, NULL, NULL,
|
||||
&crate_num, &crate_denom);
|
||||
gst_clock_set_calibration (sink->provided_clock,
|
||||
gst_clock_get_internal_time (sink->provided_clock), now, crate_num,
|
||||
crate_denom);
|
||||
|
||||
/* calculate actual latency and buffer times.
|
||||
* FIXME: In 0.11, store the latency_time internally in ns */
|
||||
spec->latency_time = gst_util_uint64_scale (spec->segsize,
|
||||
|
|
|
@ -116,6 +116,53 @@ typedef enum
|
|||
GST_BUFTYPE_MPEG4_AAC,
|
||||
} GstBufferFormatType;
|
||||
|
||||
/**
|
||||
* GstBufferFormat:
|
||||
* @GST_UNKNOWN: unspecified
|
||||
* @GST_S8: integer signed 8 bit
|
||||
* @GST_U8: integer unsigned 8 bit
|
||||
* @GST_S16_LE: integer signed 16 bit little endian
|
||||
* @GST_S16_BE: integer signed 16 bit big endian
|
||||
* @GST_U16_LE: integer unsigned 16 bit little endian
|
||||
* @GST_U16_BE: integer unsigned 16 bit big endian
|
||||
* @GST_S24_LE: integer signed 24 bit little endian
|
||||
* @GST_S24_BE: integer signed 24 bit big endian
|
||||
* @GST_U24_LE: integer unsigned 24 bit little endian
|
||||
* @GST_U24_BE: integer unsigned 24 bit big endian
|
||||
* @GST_S32_LE: integer signed 32 bit little endian
|
||||
* @GST_S32_BE: integer signed 32 bit big endian
|
||||
* @GST_U32_LE: integer unsigned 32 bit little endian
|
||||
* @GST_U32_BE: integer unsigned 32 bit big endian
|
||||
* @GST_S24_3LE: integer signed 24 bit little endian packed in 3 bytes
|
||||
* @GST_S24_3BE: integer signed 24 bit big endian packed in 3 bytes
|
||||
* @GST_U24_3LE: integer unsigned 24 bit little endian packed in 3 bytes
|
||||
* @GST_U24_3BE: integer unsigned 24 bit big endian packed in 3 bytes
|
||||
* @GST_S20_3LE: integer signed 20 bit little endian packed in 3 bytes
|
||||
* @GST_S20_3BE: integer signed 20 bit big endian packed in 3 bytes
|
||||
* @GST_U20_3LE: integer unsigned 20 bit little endian packed in 3 bytes
|
||||
* @GST_U20_3BE: integer unsigned 20 bit big endian packed in 3 bytes
|
||||
* @GST_S18_3LE: integer signed 18 bit little endian packed in 3 bytes
|
||||
* @GST_S18_3BE: integer signed 18 bit big endian packed in 3 bytes
|
||||
* @GST_U18_3LE: integer unsigned 18 bit little endian packed in 3 bytes
|
||||
* @GST_U18_3BE: integer unsigned 18 bit big endian packed in 3 bytes
|
||||
* @GST_FLOAT32_LE: floating 32 bit little endian
|
||||
* @GST_FLOAT32_BE: floating 32 bit big endian
|
||||
* @GST_FLOAT64_LE: floating 64 bit little endian
|
||||
* @GST_FLOAT64_BE: floating 64 bit big endian
|
||||
* @GST_MU_LAW: mu-law
|
||||
* @GST_A_LAW: a-law
|
||||
* @GST_IMA_ADPCM: ima adpcm
|
||||
* @GST_MPEG: mpeg audio (but not aac)
|
||||
* @GST_GSM: gsm
|
||||
* @GST_IEC958: IEC958 frames
|
||||
* @GST_AC3: ac3
|
||||
* @GST_EAC3: eac3
|
||||
* @GST_DTS: dts
|
||||
* @GST_MPEG2_AAC: mpeg-2 aac
|
||||
* @GST_MPEG4_AAC: mpeg-4 aac
|
||||
*
|
||||
* The detailed format of the samples in the ringbuffer.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
GST_UNKNOWN,
|
||||
|
|
|
@ -42,6 +42,9 @@ G_BEGIN_DECLS
|
|||
* @GST_AUDIO_CHANNEL_POSITION_NONE: used for position-less channels, e.g.
|
||||
* from a sound card that records 1024 channels; mutually exclusive with
|
||||
* any other channel position
|
||||
* @GST_AUDIO_CHANNEL_POSITION_INVALID: invalid position
|
||||
*
|
||||
* Audio channel positions.
|
||||
*/
|
||||
typedef enum {
|
||||
GST_AUDIO_CHANNEL_POSITION_INVALID = -1,
|
||||
|
@ -74,6 +77,7 @@ typedef enum {
|
|||
* are defined or all positions are undefined, but can't mix'n'match */
|
||||
GST_AUDIO_CHANNEL_POSITION_NONE,
|
||||
|
||||
/*< private >*/
|
||||
/* don't use - counter */
|
||||
GST_AUDIO_CHANNEL_POSITION_NUM
|
||||
} GstAudioChannelPosition;
|
||||
|
|
|
@ -115,6 +115,17 @@ struct _GstCddaBaseSrc {
|
|||
gpointer _gst_reserved2[GST_PADDING/2];
|
||||
};
|
||||
|
||||
/**
|
||||
* GstCddaBaseSrcClass:
|
||||
* @pushsrc_class: the parent class
|
||||
* @open: opening the device
|
||||
* @close: closing the device
|
||||
* @read_sector: reading a sector
|
||||
* @get_default_device: getting the default device
|
||||
* @probe_devices: probing possible devices
|
||||
*
|
||||
* Cdda source base class.
|
||||
*/
|
||||
struct _GstCddaBaseSrcClass {
|
||||
GstPushSrcClass pushsrc_class;
|
||||
|
||||
|
|
|
@ -66,6 +66,17 @@ typedef enum
|
|||
GST_COLOR_BALANCE_SOFTWARE
|
||||
} GstColorBalanceType;
|
||||
|
||||
/**
|
||||
* GstColorBalanceClass:
|
||||
* @klass: the parent interface
|
||||
* @balance_type: implementation type
|
||||
* @list_channels: list handled channels
|
||||
* @set_value: set a channel value
|
||||
* @get_value: get a channel value
|
||||
* @value_changed: default handler for value changed notification
|
||||
*
|
||||
* Color-balance interface.
|
||||
*/
|
||||
struct _GstColorBalanceClass {
|
||||
GTypeInterface klass;
|
||||
|
||||
|
@ -85,6 +96,7 @@ struct _GstColorBalanceClass {
|
|||
GstColorBalanceChannel *channel,
|
||||
gint value);
|
||||
|
||||
/*< private >*/
|
||||
gpointer _gst_reserved[GST_PADDING];
|
||||
};
|
||||
|
||||
|
|
|
@ -57,7 +57,13 @@ struct _GstColorBalanceChannel {
|
|||
gint max_value;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* GstColorBalanceChannelClass:
|
||||
* @parent: the parent interface
|
||||
* @value_changed: default handler for value changed notification
|
||||
*
|
||||
* Color-balance channel class.
|
||||
*/
|
||||
struct _GstColorBalanceChannelClass {
|
||||
GObjectClass parent;
|
||||
|
||||
|
@ -65,6 +71,7 @@ struct _GstColorBalanceChannelClass {
|
|||
void (* value_changed) (GstColorBalanceChannel *channel,
|
||||
gint value);
|
||||
|
||||
/*< private >*/
|
||||
gpointer _gst_reserved[GST_PADDING];
|
||||
};
|
||||
|
||||
|
|
|
@ -47,6 +47,13 @@ G_BEGIN_DECLS
|
|||
typedef struct _GstMixer GstMixer;
|
||||
typedef struct _GstMixerClass GstMixerClass;
|
||||
|
||||
/**
|
||||
* GstMixerType:
|
||||
* @GST_MIXER_HARDWARE: mixing is implemented with dedicated hardware.
|
||||
* @GST_MIXER_SOFTWARE: mixing is implemented via software processing.
|
||||
*
|
||||
* Mixer classification.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
GST_MIXER_HARDWARE,
|
||||
|
|
|
@ -49,22 +49,25 @@ typedef struct _GstMixerOptionsClass GstMixerOptionsClass;
|
|||
|
||||
/**
|
||||
* GstMixerOptions:
|
||||
* @parent: Parent object
|
||||
* @values: List of option strings. Do not access this member directly,
|
||||
* always use gst_mixer_options_get_values() instead.
|
||||
*
|
||||
* Mixer control object.
|
||||
*/
|
||||
struct _GstMixerOptions {
|
||||
GstMixerTrack parent;
|
||||
|
||||
/*< public >*/
|
||||
/* list of strings (do not access directly) (FIXME 0.11: make private) */
|
||||
GList *values;
|
||||
|
||||
/*< private >*/
|
||||
gpointer _gst_reserved[GST_PADDING];
|
||||
};
|
||||
|
||||
/**
|
||||
* GstMixerOptionsClass:
|
||||
* @parent: Parent class
|
||||
* @parent: the parent interface
|
||||
* @get_values: Optional implementation of gst_mixer_options_get_values().
|
||||
* (Since: 0.10.18)
|
||||
*/
|
||||
|
|
|
@ -39,12 +39,20 @@ G_BEGIN_DECLS
|
|||
typedef struct _GstNavigation GstNavigation;
|
||||
typedef struct _GstNavigationInterface GstNavigationInterface;
|
||||
|
||||
/**
|
||||
* GstNavigationInterface:
|
||||
* @g_iface: the parent interface
|
||||
* @send_event: sending a navigation event
|
||||
*
|
||||
* Color-balance interface.
|
||||
*/
|
||||
struct _GstNavigationInterface {
|
||||
GTypeInterface g_iface;
|
||||
|
||||
/* virtual functions */
|
||||
void (*send_event) (GstNavigation *navigation, GstStructure *structure);
|
||||
|
||||
|
||||
/*< private >*/
|
||||
gpointer _gst_reserved[GST_PADDING];
|
||||
};
|
||||
|
||||
|
@ -109,7 +117,7 @@ typedef enum {
|
|||
GST_NAVIGATION_COMMAND_MENU5 = 5,
|
||||
GST_NAVIGATION_COMMAND_MENU6 = 6,
|
||||
GST_NAVIGATION_COMMAND_MENU7 = 7,
|
||||
|
||||
|
||||
GST_NAVIGATION_COMMAND_LEFT = 20,
|
||||
GST_NAVIGATION_COMMAND_RIGHT = 21,
|
||||
GST_NAVIGATION_COMMAND_UP = 22,
|
||||
|
@ -130,6 +138,14 @@ typedef enum {
|
|||
#define GST_NAVIGATION_COMMAND_DVD_CHAPTER_MENU GST_NAVIGATION_COMMAND_MENU7
|
||||
|
||||
/* Queries */
|
||||
/**
|
||||
* GstNavigationQueryType:
|
||||
* @GST_NAVIGATION_QUERY_INVALID: invalid query
|
||||
* @GST_NAVIGATION_QUERY_COMMANDS: command query
|
||||
* @GST_NAVIGATION_QUERY_ANGLES: viewing angle query
|
||||
*
|
||||
* Tyoes of navigation interface queries.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
GST_NAVIGATION_QUERY_INVALID = 0,
|
||||
|
@ -245,9 +261,9 @@ gboolean gst_navigation_event_parse_command (GstEvent *event,
|
|||
/* interface virtual function wrappers */
|
||||
void gst_navigation_send_event (GstNavigation *navigation,
|
||||
GstStructure *structure);
|
||||
void gst_navigation_send_key_event (GstNavigation *navigation,
|
||||
void gst_navigation_send_key_event (GstNavigation *navigation,
|
||||
const char *event, const char *key);
|
||||
void gst_navigation_send_mouse_event (GstNavigation *navigation,
|
||||
void gst_navigation_send_mouse_event (GstNavigation *navigation,
|
||||
const char *event, int button, double x, double y);
|
||||
void gst_navigation_send_command (GstNavigation *navigation,
|
||||
GstNavigationCommand command);
|
||||
|
|
|
@ -45,6 +45,25 @@ G_BEGIN_DECLS
|
|||
typedef struct _GstTuner GstTuner;
|
||||
typedef struct _GstTunerClass GstTunerClass;
|
||||
|
||||
/**
|
||||
* GstTunerClass:
|
||||
* @klass: the parent interface
|
||||
* @list_channels: list available channels
|
||||
* @set_channel: set to a channel
|
||||
* @get_channel: return the current channel
|
||||
* @list_norms: list available norms
|
||||
* @set_norm: set a norm
|
||||
* @get_norm: return the current norm
|
||||
* @set_frequency: set the frequency
|
||||
* @get_frequency: return the current frequency
|
||||
* @signal_strength: get the signal strength
|
||||
* @channel_changed: default handler for channel changed notification
|
||||
* @norm_changed: default handler for norm changed notification
|
||||
* @frequency_changed: default handler for frequency changed notification
|
||||
* @signal_changed: default handler for signal-strength changed notification
|
||||
*
|
||||
* Tuner interface.
|
||||
*/
|
||||
struct _GstTunerClass {
|
||||
GTypeInterface klass;
|
||||
|
||||
|
@ -80,6 +99,7 @@ struct _GstTunerClass {
|
|||
GstTunerChannel *channel,
|
||||
gint signal);
|
||||
|
||||
/*< private >*/
|
||||
gpointer _gst_reserved[GST_PADDING];
|
||||
};
|
||||
|
||||
|
|
|
@ -66,23 +66,23 @@
|
|||
* // ignore anything but 'prepare-xwindow-id' element messages
|
||||
* if (GST_MESSAGE_TYPE (message) != GST_MESSAGE_ELEMENT)
|
||||
* return GST_BUS_PASS;
|
||||
*
|
||||
*
|
||||
* if (!gst_structure_has_name (message->structure, "prepare-xwindow-id"))
|
||||
* return GST_BUS_PASS;
|
||||
*
|
||||
*
|
||||
* win = XCreateSimpleWindow (disp, root, 0, 0, 320, 240, 0, 0, 0);
|
||||
*
|
||||
*
|
||||
* XSetWindowBackgroundPixmap (disp, win, None);
|
||||
*
|
||||
*
|
||||
* XMapRaised (disp, win);
|
||||
*
|
||||
*
|
||||
* XSync (disp, FALSE);
|
||||
*
|
||||
*
|
||||
* gst_x_overlay_set_window_handle (GST_X_OVERLAY (GST_MESSAGE_SRC (message)),
|
||||
* win);
|
||||
*
|
||||
*
|
||||
* gst_message_unref (message);
|
||||
*
|
||||
*
|
||||
* return GST_BUS_DROP;
|
||||
* }
|
||||
* ...
|
||||
|
@ -158,17 +158,17 @@
|
|||
* return GST_BUS_PASS;
|
||||
* if (!gst_structure_has_name (message->structure, "prepare-xwindow-id"))
|
||||
* return GST_BUS_PASS;
|
||||
*
|
||||
*
|
||||
* if (video_window_xid != 0) {
|
||||
* GstXOverlay *xoverlay;
|
||||
*
|
||||
*
|
||||
* // GST_MESSAGE_SRC (message) will be the video sink element
|
||||
* xoverlay = GST_X_OVERLAY (GST_MESSAGE_SRC (message));
|
||||
* gst_x_overlay_set_window_handle (xoverlay, video_window_xid);
|
||||
* } else {
|
||||
* g_warning ("Should have obtained video_window_xid by now!");
|
||||
* }
|
||||
*
|
||||
*
|
||||
* gst_message_unref (message);
|
||||
* return GST_BUS_DROP;
|
||||
* }
|
||||
|
@ -182,7 +182,7 @@
|
|||
* if (!gdk_window_ensure_native (widget->window))
|
||||
* g_error ("Couldn't create native window needed for GstXOverlay!");
|
||||
* #endif
|
||||
*
|
||||
*
|
||||
* #ifdef GDK_WINDOWING_X11
|
||||
* video_window_xid = GDK_WINDOW_XID (video_window->window);
|
||||
* #endif
|
||||
|
@ -208,12 +208,12 @@
|
|||
* ...
|
||||
* // show the GUI
|
||||
* gtk_widget_show_all (app_window);
|
||||
*
|
||||
*
|
||||
* // realize window now so that the video window gets created and we can
|
||||
* // obtain its XID before the pipeline is started up and the videosink
|
||||
* // asks for the XID of the window to render onto
|
||||
* gtk_widget_realize (window);
|
||||
*
|
||||
*
|
||||
* // we should have the XID now
|
||||
* g_assert (video_window_xid != 0);
|
||||
* ...
|
||||
|
@ -235,39 +235,39 @@
|
|||
* #include <glib.h>
|
||||
* #include <gst/gst.h>
|
||||
* #include <gst/interfaces/xoverlay.h>
|
||||
*
|
||||
*
|
||||
* #include <QApplication>
|
||||
* #include <QTimer>
|
||||
* #include <QWidget>
|
||||
*
|
||||
*
|
||||
* int main(int argc, char *argv[])
|
||||
* {
|
||||
* if (!g_thread_supported ())
|
||||
* g_thread_init (NULL);
|
||||
*
|
||||
*
|
||||
* gst_init (&argc, &argv);
|
||||
* QApplication app(argc, argv);
|
||||
* app.connect(&app, SIGNAL(lastWindowClosed()), &app, SLOT(quit ()));
|
||||
*
|
||||
*
|
||||
* // prepare the pipeline
|
||||
*
|
||||
*
|
||||
* GstElement *pipeline = gst_pipeline_new ("xvoverlay");
|
||||
* GstElement *src = gst_element_factory_make ("videotestsrc", NULL);
|
||||
* GstElement *sink = gst_element_factory_make ("xvimagesink", NULL);
|
||||
* gst_bin_add_many (GST_BIN (pipeline), src, sink, NULL);
|
||||
* gst_element_link (src, sink);
|
||||
*
|
||||
*
|
||||
* // prepare the ui
|
||||
*
|
||||
*
|
||||
* QWidget window;
|
||||
* window.resize(320, 240);
|
||||
* window.show();
|
||||
*
|
||||
*
|
||||
* WId xwinid = window.winId();
|
||||
* gst_x_overlay_set_window_handle (GST_X_OVERLAY (sink), xwinid);
|
||||
*
|
||||
*
|
||||
* // run the pipeline
|
||||
*
|
||||
*
|
||||
* GstStateChangeReturn sret = gst_element_set_state (pipeline,
|
||||
* GST_STATE_PLAYING);
|
||||
* if (sret == GST_STATE_CHANGE_FAILURE) {
|
||||
|
@ -276,13 +276,13 @@
|
|||
* // Exit application
|
||||
* QTimer::singleShot(0, QApplication::activeWindow(), SLOT(quit()));
|
||||
* }
|
||||
*
|
||||
*
|
||||
* int ret = app.exec();
|
||||
*
|
||||
*
|
||||
* window.hide();
|
||||
* gst_element_set_state (pipeline, GST_STATE_NULL);
|
||||
* gst_object_unref (pipeline);
|
||||
*
|
||||
*
|
||||
* return ret;
|
||||
* }
|
||||
* ]|
|
||||
|
@ -333,12 +333,12 @@ gst_x_overlay_base_init (gpointer g_class)
|
|||
|
||||
/**
|
||||
* gst_x_overlay_set_xwindow_id:
|
||||
* @overlay: a #GstXOverlay to set the XWindow on.
|
||||
* @xwindow_id: a #XID referencing the XWindow.
|
||||
* @overlay: a #GstXOverlay to set the window on.
|
||||
* @xwindow_id: a XID referencing the XWindow.
|
||||
*
|
||||
* This will call the video overlay's set_xwindow_id method. You should
|
||||
* use this method to tell to a XOverlay to display video output to a
|
||||
* specific XWindow. Passing 0 as the xwindow_id will tell the overlay to
|
||||
* specific XWindow. Passing 0 as the @xwindow_id will tell the overlay to
|
||||
* stop using that window and create an internal one.
|
||||
*
|
||||
* Deprecated: Use gst_x_overlay_set_window_handle() instead.
|
||||
|
@ -358,13 +358,13 @@ gst_x_overlay_set_xwindow_id (GstXOverlay * overlay, gulong xwindow_id)
|
|||
|
||||
/**
|
||||
* gst_x_overlay_set_window_handle:
|
||||
* @overlay: a #GstXOverlay to set the XWindow on.
|
||||
* @xwindow_id: a #XID referencing the XWindow.
|
||||
* @overlay: a #GstXOverlay to set the window on.
|
||||
* @handle: a handle referencing the window.
|
||||
*
|
||||
* This will call the video overlay's set_window_handle method. You
|
||||
* should use this method to tell to a XOverlay to display video output to a
|
||||
* specific XWindow. Passing 0 as the xwindow_id will tell the overlay to
|
||||
* stop using that window and create an internal one.
|
||||
* specific window (e.g. an XWindow on X11). Passing 0 as the @handle will
|
||||
* tell the overlay to stop using that window and create an internal one.
|
||||
*
|
||||
* Since: 0.10.31
|
||||
*/
|
||||
|
@ -452,7 +452,7 @@ gst_x_overlay_got_window_handle (GstXOverlay * overlay, guintptr handle)
|
|||
* @overlay: a #GstXOverlay which does not yet have an XWindow.
|
||||
*
|
||||
* This will post a "prepare-xwindow-id" element message on the bus
|
||||
* to give applications an opportunity to call
|
||||
* to give applications an opportunity to call
|
||||
* gst_x_overlay_set_xwindow_id() before a plugin creates its own
|
||||
* window.
|
||||
*
|
||||
|
|
|
@ -52,10 +52,11 @@ typedef struct _GstXOverlayClass GstXOverlayClass;
|
|||
/**
|
||||
* GstXOverlayClass:
|
||||
* @klass: parent interface type.
|
||||
* @set_xwindow_id: virtual method to configure the XWindow id
|
||||
* @set_xwindow_id: (deprecated) virtual method to configure the XWindow handle
|
||||
* @expose: virtual method to handle expose events
|
||||
* @handle_events: virtual method to handle events
|
||||
* @set_render_rectangle: virtual method to set the render rectangle (since 0.10.29)
|
||||
* @set_window_handle: virtual method to configure the window handle
|
||||
*
|
||||
* #GstXOverlay interface
|
||||
*/
|
||||
|
@ -67,14 +68,16 @@ struct _GstXOverlayClass {
|
|||
void (* set_xwindow_id) (GstXOverlay *overlay,
|
||||
gulong xwindow_id);
|
||||
#else
|
||||
#ifndef __GTK_DOC_IGNORE__
|
||||
void (* set_xwindow_id_disabled) (GstXOverlay *overlay,
|
||||
gulong xwindow_id);
|
||||
#endif
|
||||
#endif /* not GST_DISABLE_DEPRECATED */
|
||||
|
||||
void (* expose) (GstXOverlay *overlay);
|
||||
|
||||
|
||||
void (* handle_events) (GstXOverlay *overlay,
|
||||
gboolean handle_events);
|
||||
gboolean handle_events);
|
||||
|
||||
void (* set_render_rectangle) (GstXOverlay *overlay,
|
||||
gint x, gint y,
|
||||
|
@ -90,7 +93,7 @@ GType gst_x_overlay_get_type (void);
|
|||
|
||||
/* virtual class function wrappers */
|
||||
#ifndef GST_DISABLE_DEPRECATED
|
||||
void gst_x_overlay_set_xwindow_id (GstXOverlay *overlay,
|
||||
void gst_x_overlay_set_xwindow_id (GstXOverlay *overlay,
|
||||
gulong xwindow_id);
|
||||
#endif
|
||||
|
||||
|
@ -103,7 +106,7 @@ void gst_x_overlay_expose (GstXOverlay *overlay);
|
|||
void gst_x_overlay_handle_events (GstXOverlay *overlay,
|
||||
gboolean handle_events);
|
||||
|
||||
void gst_x_overlay_set_window_handle (GstXOverlay *overlay,
|
||||
void gst_x_overlay_set_window_handle (GstXOverlay *overlay,
|
||||
guintptr handle);
|
||||
|
||||
/* public methods to dispatch bus messages */
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
* if you need to check at runtime what version of the gst-plugins-base
|
||||
* libraries are being used / you are currently linked against.
|
||||
*
|
||||
* The version macros get defined by including <gst/pbutils/pbutils.h>.
|
||||
* The version macros get defined by including <gst/pbutils/pbutils.h>.
|
||||
*/
|
||||
|
||||
#include "gstpluginsbaseversion.h"
|
||||
|
|
|
@ -21,12 +21,9 @@
|
|||
* SECTION:gstbasertpaudiopayload
|
||||
* @short_description: Base class for audio RTP payloader
|
||||
*
|
||||
* <refsect2>
|
||||
* <para>
|
||||
* Provides a base class for audio RTP payloaders for frame or sample based
|
||||
* audio codecs (constant bitrate)
|
||||
* </para>
|
||||
* <para>
|
||||
*
|
||||
* This class derives from GstBaseRTPPayload. It can be used for payloading
|
||||
* audio codecs. It will only work with constant bitrate codecs. It supports
|
||||
* both frame based and sample based codecs. It takes care of packing up the
|
||||
|
@ -38,7 +35,8 @@
|
|||
* equal to min-ptime (if set). If min-ptime is not set, any residual data is
|
||||
* sent in a last RTP packet. In the case of frame based codecs, the resulting
|
||||
* RTP packets always contain full frames.
|
||||
* </para>
|
||||
*
|
||||
* <refsect2>
|
||||
* <title>Usage</title>
|
||||
* <para>
|
||||
* To use this base class, your child element needs to call either
|
||||
|
|
|
@ -61,10 +61,17 @@ struct _GstBaseRTPAudioPayload
|
|||
gpointer _gst_reserved[GST_PADDING];
|
||||
};
|
||||
|
||||
/**
|
||||
* GstBaseRTPAudioPayloadClass:
|
||||
* @parent_class: the parent class
|
||||
*
|
||||
* Base class for audio RTP payloader.
|
||||
*/
|
||||
struct _GstBaseRTPAudioPayloadClass
|
||||
{
|
||||
GstBaseRTPPayloadClass parent_class;
|
||||
|
||||
/*< private >*/
|
||||
gpointer _gst_reserved[GST_PADDING];
|
||||
};
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* GStreamer
|
||||
* Copyright (C) <2005> Philippe Khalaf <burger@speedy.org>
|
||||
* Copyright (C) <2005> Philippe Khalaf <burger@speedy.org>
|
||||
* Copyright (C) <2005> Nokia Corporation <kai.vehmanen@nokia.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
|
@ -22,11 +22,7 @@
|
|||
* SECTION:gstbasertpdepayload
|
||||
* @short_description: Base class for RTP depayloader
|
||||
*
|
||||
* <refsect2>
|
||||
* <para>
|
||||
* Provides a base class for RTP depayloaders
|
||||
* </para>
|
||||
* </refsect2>
|
||||
*/
|
||||
|
||||
#include "gstbasertpdepayload.h"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* GStreamer
|
||||
* Copyright (C) <2005> Philippe Khalaf <burger@speedy.org>
|
||||
* Copyright (C) <2005> Philippe Khalaf <burger@speedy.org>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
|
@ -62,6 +62,18 @@ struct _GstBaseRTPDepayload
|
|||
gpointer _gst_reserved[GST_PADDING-1];
|
||||
};
|
||||
|
||||
/**
|
||||
* GstBaseRTPDepayloadClass:
|
||||
* @parent_class: the parent class
|
||||
* @set_caps: configure the depayloader
|
||||
* @add_to_queue: (deprecated)
|
||||
* @process: process incoming rtp packets
|
||||
* @set_gst_timestamp: convert from RTP timestamp to GST timestamp
|
||||
* @packet_lost: signal the depayloader about packet loss
|
||||
* @handle_event: custom event handling
|
||||
*
|
||||
* Base class for audio RTP payloader.
|
||||
*/
|
||||
struct _GstBaseRTPDepayloadClass
|
||||
{
|
||||
GstElementClass parent_class;
|
||||
|
|
|
@ -16,11 +16,7 @@
|
|||
* SECTION:gstbasertppayload
|
||||
* @short_description: Base class for RTP payloader
|
||||
*
|
||||
* <refsect2>
|
||||
* <para>
|
||||
* Provides a base class for RTP payloaders
|
||||
* </para>
|
||||
* </refsect2>
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
|
|
@ -120,6 +120,16 @@ struct _GstBaseRTPPayload
|
|||
} abidata;
|
||||
};
|
||||
|
||||
/**
|
||||
* GstBaseRTPPayloadClass:
|
||||
* @parent_class: the parent class
|
||||
* @set_caps: configure the payloader
|
||||
* @handle_buffer: process data
|
||||
* @handle_event: custom event handling
|
||||
* @get_caps: get desired caps
|
||||
*
|
||||
* Base class for audio RTP payloader.
|
||||
*/
|
||||
struct _GstBaseRTPPayloadClass
|
||||
{
|
||||
GstElementClass parent_class;
|
||||
|
|
|
@ -185,7 +185,7 @@ typedef enum {
|
|||
* @GST_RTSP_GET: the GET method (HTTP). Since 0.10.25
|
||||
* @GST_RTSP_POST: the POST method (HTTP). Since 0.10.25
|
||||
*
|
||||
* The different supported RTSP methods.
|
||||
* The different supported RTSP methods.
|
||||
*/
|
||||
typedef enum {
|
||||
GST_RTSP_INVALID = 0,
|
||||
|
@ -221,11 +221,17 @@ typedef enum {
|
|||
/**
|
||||
* GST_RTSP_AUTH_MAX:
|
||||
*
|
||||
* Strongest available authentication method
|
||||
* Strongest available authentication method
|
||||
*/
|
||||
#define GST_RTSP_AUTH_MAX GST_RTSP_AUTH_DIGEST
|
||||
|
||||
/**
|
||||
* GstRTSPHeaderField:
|
||||
*
|
||||
* Enumeration of rtsp header fields.
|
||||
*/
|
||||
typedef enum {
|
||||
/*< protected >*/
|
||||
GST_RTSP_HDR_INVALID,
|
||||
|
||||
/*
|
||||
|
@ -330,51 +336,57 @@ typedef enum {
|
|||
GST_RTSP_HDR_LAST
|
||||
} GstRTSPHeaderField;
|
||||
|
||||
/**
|
||||
* GstRTSPStatusCode:
|
||||
*
|
||||
* Enumeration of rtsp status codes.
|
||||
*/
|
||||
typedef enum {
|
||||
GST_RTSP_STS_INVALID = 0,
|
||||
GST_RTSP_STS_CONTINUE = 100,
|
||||
GST_RTSP_STS_OK = 200,
|
||||
GST_RTSP_STS_CREATED = 201,
|
||||
GST_RTSP_STS_LOW_ON_STORAGE = 250,
|
||||
GST_RTSP_STS_MULTIPLE_CHOICES = 300,
|
||||
GST_RTSP_STS_MOVED_PERMANENTLY = 301,
|
||||
GST_RTSP_STS_MOVE_TEMPORARILY = 302,
|
||||
GST_RTSP_STS_SEE_OTHER = 303,
|
||||
GST_RTSP_STS_NOT_MODIFIED = 304,
|
||||
GST_RTSP_STS_USE_PROXY = 305,
|
||||
GST_RTSP_STS_BAD_REQUEST = 400,
|
||||
GST_RTSP_STS_UNAUTHORIZED = 401,
|
||||
GST_RTSP_STS_PAYMENT_REQUIRED = 402,
|
||||
GST_RTSP_STS_FORBIDDEN = 403,
|
||||
GST_RTSP_STS_NOT_FOUND = 404,
|
||||
GST_RTSP_STS_METHOD_NOT_ALLOWED = 405,
|
||||
GST_RTSP_STS_NOT_ACCEPTABLE = 406,
|
||||
GST_RTSP_STS_PROXY_AUTH_REQUIRED = 407,
|
||||
GST_RTSP_STS_REQUEST_TIMEOUT = 408,
|
||||
GST_RTSP_STS_GONE = 410,
|
||||
GST_RTSP_STS_LENGTH_REQUIRED = 411,
|
||||
GST_RTSP_STS_PRECONDITION_FAILED = 412,
|
||||
GST_RTSP_STS_REQUEST_ENTITY_TOO_LARGE = 413,
|
||||
GST_RTSP_STS_REQUEST_URI_TOO_LARGE = 414,
|
||||
GST_RTSP_STS_UNSUPPORTED_MEDIA_TYPE = 415,
|
||||
GST_RTSP_STS_PARAMETER_NOT_UNDERSTOOD = 451,
|
||||
GST_RTSP_STS_CONFERENCE_NOT_FOUND = 452,
|
||||
GST_RTSP_STS_NOT_ENOUGH_BANDWIDTH = 453,
|
||||
GST_RTSP_STS_SESSION_NOT_FOUND = 454,
|
||||
GST_RTSP_STS_METHOD_NOT_VALID_IN_THIS_STATE = 455,
|
||||
GST_RTSP_STS_HEADER_FIELD_NOT_VALID_FOR_RESOURCE = 456,
|
||||
GST_RTSP_STS_INVALID_RANGE = 457,
|
||||
GST_RTSP_STS_PARAMETER_IS_READONLY = 458,
|
||||
GST_RTSP_STS_AGGREGATE_OPERATION_NOT_ALLOWED = 459,
|
||||
GST_RTSP_STS_ONLY_AGGREGATE_OPERATION_ALLOWED = 460,
|
||||
GST_RTSP_STS_UNSUPPORTED_TRANSPORT = 461,
|
||||
GST_RTSP_STS_DESTINATION_UNREACHABLE = 462,
|
||||
GST_RTSP_STS_INTERNAL_SERVER_ERROR = 500,
|
||||
GST_RTSP_STS_NOT_IMPLEMENTED = 501,
|
||||
GST_RTSP_STS_BAD_GATEWAY = 502,
|
||||
GST_RTSP_STS_SERVICE_UNAVAILABLE = 503,
|
||||
GST_RTSP_STS_GATEWAY_TIMEOUT = 504,
|
||||
GST_RTSP_STS_RTSP_VERSION_NOT_SUPPORTED = 505,
|
||||
/*< protected >*/
|
||||
GST_RTSP_STS_INVALID = 0,
|
||||
GST_RTSP_STS_CONTINUE = 100,
|
||||
GST_RTSP_STS_OK = 200,
|
||||
GST_RTSP_STS_CREATED = 201,
|
||||
GST_RTSP_STS_LOW_ON_STORAGE = 250,
|
||||
GST_RTSP_STS_MULTIPLE_CHOICES = 300,
|
||||
GST_RTSP_STS_MOVED_PERMANENTLY = 301,
|
||||
GST_RTSP_STS_MOVE_TEMPORARILY = 302,
|
||||
GST_RTSP_STS_SEE_OTHER = 303,
|
||||
GST_RTSP_STS_NOT_MODIFIED = 304,
|
||||
GST_RTSP_STS_USE_PROXY = 305,
|
||||
GST_RTSP_STS_BAD_REQUEST = 400,
|
||||
GST_RTSP_STS_UNAUTHORIZED = 401,
|
||||
GST_RTSP_STS_PAYMENT_REQUIRED = 402,
|
||||
GST_RTSP_STS_FORBIDDEN = 403,
|
||||
GST_RTSP_STS_NOT_FOUND = 404,
|
||||
GST_RTSP_STS_METHOD_NOT_ALLOWED = 405,
|
||||
GST_RTSP_STS_NOT_ACCEPTABLE = 406,
|
||||
GST_RTSP_STS_PROXY_AUTH_REQUIRED = 407,
|
||||
GST_RTSP_STS_REQUEST_TIMEOUT = 408,
|
||||
GST_RTSP_STS_GONE = 410,
|
||||
GST_RTSP_STS_LENGTH_REQUIRED = 411,
|
||||
GST_RTSP_STS_PRECONDITION_FAILED = 412,
|
||||
GST_RTSP_STS_REQUEST_ENTITY_TOO_LARGE = 413,
|
||||
GST_RTSP_STS_REQUEST_URI_TOO_LARGE = 414,
|
||||
GST_RTSP_STS_UNSUPPORTED_MEDIA_TYPE = 415,
|
||||
GST_RTSP_STS_PARAMETER_NOT_UNDERSTOOD = 451,
|
||||
GST_RTSP_STS_CONFERENCE_NOT_FOUND = 452,
|
||||
GST_RTSP_STS_NOT_ENOUGH_BANDWIDTH = 453,
|
||||
GST_RTSP_STS_SESSION_NOT_FOUND = 454,
|
||||
GST_RTSP_STS_METHOD_NOT_VALID_IN_THIS_STATE = 455,
|
||||
GST_RTSP_STS_HEADER_FIELD_NOT_VALID_FOR_RESOURCE = 456,
|
||||
GST_RTSP_STS_INVALID_RANGE = 457,
|
||||
GST_RTSP_STS_PARAMETER_IS_READONLY = 458,
|
||||
GST_RTSP_STS_AGGREGATE_OPERATION_NOT_ALLOWED = 459,
|
||||
GST_RTSP_STS_ONLY_AGGREGATE_OPERATION_ALLOWED = 460,
|
||||
GST_RTSP_STS_UNSUPPORTED_TRANSPORT = 461,
|
||||
GST_RTSP_STS_DESTINATION_UNREACHABLE = 462,
|
||||
GST_RTSP_STS_INTERNAL_SERVER_ERROR = 500,
|
||||
GST_RTSP_STS_NOT_IMPLEMENTED = 501,
|
||||
GST_RTSP_STS_BAD_GATEWAY = 502,
|
||||
GST_RTSP_STS_SERVICE_UNAVAILABLE = 503,
|
||||
GST_RTSP_STS_GATEWAY_TIMEOUT = 504,
|
||||
GST_RTSP_STS_RTSP_VERSION_NOT_SUPPORTED = 505,
|
||||
GST_RTSP_STS_OPTION_NOT_SUPPORTED = 551
|
||||
} GstRTSPStatusCode;
|
||||
|
||||
|
|
|
@ -162,10 +162,10 @@ xmp_tag_get_type_name (XmpTag * xmptag)
|
|||
switch (xmptag->type) {
|
||||
case GstXmpTagTypeSeq:
|
||||
return "rdf:Seq";
|
||||
default:
|
||||
g_assert_not_reached ();
|
||||
case GstXmpTagTypeBag:
|
||||
return "rdf:Bag";
|
||||
default:
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -844,7 +844,7 @@ deserialize_xmp_rating (XmpTag * xmptag, GstTagList * taglist,
|
|||
return;
|
||||
}
|
||||
|
||||
if (value < 0 || value > 100) {
|
||||
if (value > 100) {
|
||||
GST_WARNING ("Unsupported Rating tag %u (should be from 0 to 100), "
|
||||
"ignoring", value);
|
||||
return;
|
||||
|
@ -1073,7 +1073,7 @@ read_one_tag (GstTagList * list, XmpTag * xmptag,
|
|||
|
||||
g_return_if_fail (tag != NULL);
|
||||
|
||||
if (xmptag && xmptag->deserialize) {
|
||||
if (xmptag->deserialize) {
|
||||
xmptag->deserialize (xmptag, list, tag, xmptag->tag_name, v, pending_tags);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -236,7 +236,7 @@ link_failed:
|
|||
* @from_caps: the #GstCaps to convert from
|
||||
* @to_caps: the #GstCaps to convert to
|
||||
* @timeout: the maximum amount of time allowed for the processing.
|
||||
* @err: pointer to a #GError. Can be %NULL.
|
||||
* @error: pointer to a #GError. Can be %NULL.
|
||||
*
|
||||
* Converts a raw video buffer into the specified output caps.
|
||||
*
|
||||
|
@ -256,7 +256,7 @@ gst_video_convert_frame (GstBuffer * buf, GstCaps * from_caps,
|
|||
{
|
||||
GstMessage *msg;
|
||||
GstBuffer *result = NULL;
|
||||
GError *error = NULL;
|
||||
GError *err = NULL;
|
||||
GstBus *bus;
|
||||
GstCaps *to_caps_copy = NULL;
|
||||
GstFlowReturn ret;
|
||||
|
@ -278,8 +278,7 @@ gst_video_convert_frame (GstBuffer * buf, GstCaps * from_caps,
|
|||
}
|
||||
|
||||
pipeline =
|
||||
build_convert_frame_pipeline (&src, &sink, from_caps, to_caps_copy,
|
||||
&error);
|
||||
build_convert_frame_pipeline (&src, &sink, from_caps, to_caps_copy, &err);
|
||||
if (!pipeline)
|
||||
goto no_pipeline;
|
||||
|
||||
|
@ -317,14 +316,14 @@ gst_video_convert_frame (GstBuffer * buf, GstCaps * from_caps,
|
|||
case GST_MESSAGE_ERROR:{
|
||||
gchar *dbg = NULL;
|
||||
|
||||
gst_message_parse_error (msg, &error, &dbg);
|
||||
if (error) {
|
||||
GST_ERROR ("Could not convert video frame: %s", error->message);
|
||||
GST_DEBUG ("%s [debug: %s]", error->message, GST_STR_NULL (dbg));
|
||||
if (err)
|
||||
*err = error;
|
||||
gst_message_parse_error (msg, &err, &dbg);
|
||||
if (err) {
|
||||
GST_ERROR ("Could not convert video frame: %s", err->message);
|
||||
GST_DEBUG ("%s [debug: %s]", err->message, GST_STR_NULL (dbg));
|
||||
if (error)
|
||||
*error = err;
|
||||
else
|
||||
g_error_free (error);
|
||||
g_error_free (err);
|
||||
}
|
||||
g_free (dbg);
|
||||
break;
|
||||
|
@ -336,8 +335,8 @@ gst_video_convert_frame (GstBuffer * buf, GstCaps * from_caps,
|
|||
gst_message_unref (msg);
|
||||
} else {
|
||||
GST_ERROR ("Could not convert video frame: timeout during conversion");
|
||||
if (err)
|
||||
*err = g_error_new (GST_CORE_ERROR, GST_CORE_ERROR_FAILED,
|
||||
if (error)
|
||||
*error = g_error_new (GST_CORE_ERROR, GST_CORE_ERROR_FAILED,
|
||||
"Could not convert video frame: timeout during conversion");
|
||||
}
|
||||
|
||||
|
@ -353,10 +352,10 @@ no_pipeline:
|
|||
{
|
||||
gst_caps_unref (to_caps_copy);
|
||||
|
||||
if (err)
|
||||
*err = error;
|
||||
if (error)
|
||||
*error = err;
|
||||
else
|
||||
g_error_free (error);
|
||||
g_error_free (err);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@ -576,6 +575,7 @@ done:
|
|||
* @to_caps: the #GstCaps to convert to
|
||||
* @timeout: the maximum amount of time allowed for the processing.
|
||||
* @callback: %GstVideoConvertFrameCallback that will be called after conversion.
|
||||
* @user_data: extra data that will be passed to the @callback
|
||||
* @destroy_notify: %GDestroyNotify to be called after @user_data is not needed anymore
|
||||
*
|
||||
* Converts a raw video buffer into the specified output caps.
|
||||
|
|
|
@ -47,6 +47,12 @@ struct _GstVideoFilter {
|
|||
gboolean inited;
|
||||
};
|
||||
|
||||
/**
|
||||
* GstVideoFilterClass:
|
||||
* @parent_class: the parent class structure
|
||||
*
|
||||
* The video filter class structure.
|
||||
*/
|
||||
struct _GstVideoFilterClass {
|
||||
GstBaseTransformClass parent_class;
|
||||
};
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
#include <gst/base/gstbasesink.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
|
||||
#define GST_TYPE_VIDEO_SINK (gst_video_sink_get_type())
|
||||
#define GST_VIDEO_SINK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_VIDEO_SINK, GstVideoSink))
|
||||
|
@ -60,7 +60,7 @@ G_BEGIN_DECLS
|
|||
|
||||
#define GST_VIDEO_SINK_WIDTH(obj) (GST_VIDEO_SINK_CAST (obj)->width)
|
||||
#define GST_VIDEO_SINK_HEIGHT(obj) (GST_VIDEO_SINK_CAST (obj)->height)
|
||||
|
||||
|
||||
typedef struct _GstVideoSink GstVideoSink;
|
||||
typedef struct _GstVideoSinkClass GstVideoSinkClass;
|
||||
typedef struct _GstVideoRectangle GstVideoRectangle;
|
||||
|
@ -84,7 +84,6 @@ struct _GstVideoRectangle {
|
|||
|
||||
/**
|
||||
* GstVideoSink:
|
||||
* @element: the parent object structure (which is GstBaseSink)
|
||||
* @height: video height (derived class needs to set this)
|
||||
* @width: video width (derived class needs to set this)
|
||||
*
|
||||
|
@ -93,9 +92,10 @@ struct _GstVideoRectangle {
|
|||
*/
|
||||
struct _GstVideoSink {
|
||||
GstBaseSink element; /* FIXME 0.11: this should not be called 'element' */
|
||||
|
||||
|
||||
/*< public >*/
|
||||
gint width, height;
|
||||
|
||||
|
||||
/*< private >*/
|
||||
GstVideoSinkPrivate *priv;
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
*
|
||||
* <refsect2>
|
||||
* <para>
|
||||
* This library contains some helper functions and includes the
|
||||
* This library contains some helper functions and includes the
|
||||
* videosink and videofilter base classes.
|
||||
* </para>
|
||||
* </refsect2>
|
||||
|
@ -53,7 +53,7 @@ static GstVideoFormat gst_video_format_from_rgb16_masks (int red_mask,
|
|||
*
|
||||
* A convenience function to retrieve a GValue holding the framerate
|
||||
* from the caps on a pad.
|
||||
*
|
||||
*
|
||||
* The pad needs to have negotiated caps containing a framerate property.
|
||||
*
|
||||
* Returns: NULL if the pad has no configured caps or the configured caps
|
||||
|
@ -121,7 +121,7 @@ no_fraction:
|
|||
*
|
||||
* Inspect the caps of the provided pad and retrieve the width and height of
|
||||
* the video frames it is configured for.
|
||||
*
|
||||
*
|
||||
* The pad needs to have negotiated caps containing width and height properties.
|
||||
*
|
||||
* Returns: TRUE if the width and height could be retrieved.
|
||||
|
@ -181,13 +181,13 @@ no_size:
|
|||
* @display_par_n: Numerator of the pixel aspect ratio of the display device
|
||||
* @display_par_d: Denominator of the pixel aspect ratio of the display device
|
||||
*
|
||||
* Given the Pixel Aspect Ratio and size of an input video frame, and the
|
||||
* pixel aspect ratio of the intended display device, calculates the actual
|
||||
* Given the Pixel Aspect Ratio and size of an input video frame, and the
|
||||
* pixel aspect ratio of the intended display device, calculates the actual
|
||||
* display ratio the video will be rendered with.
|
||||
*
|
||||
* Returns: A boolean indicating success and a calculated Display Ratio in the
|
||||
* dar_n and dar_d parameters.
|
||||
* The return value is FALSE in the case of integer overflow or other error.
|
||||
* Returns: A boolean indicating success and a calculated Display Ratio in the
|
||||
* dar_n and dar_d parameters.
|
||||
* The return value is FALSE in the case of integer overflow or other error.
|
||||
*
|
||||
* Since: 0.10.7
|
||||
*/
|
||||
|
@ -299,7 +299,7 @@ gst_video_parse_caps_color_matrix (GstCaps * caps)
|
|||
* halfway-sited vertically), "jpeg" for JPEG and Theora style
|
||||
* chroma siting (halfway-sited both horizontally and vertically).
|
||||
* Other chroma site values are possible, but uncommon.
|
||||
*
|
||||
*
|
||||
* When no chroma site is specified in the caps, it should be assumed
|
||||
* to be "mpeg2".
|
||||
*
|
||||
|
@ -681,10 +681,10 @@ gst_video_format_new_caps_raw (GstVideoFormat format)
|
|||
blue_mask = GST_VIDEO_COMP1_MASK_15_INT;
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
} else if (bpp != 8) {
|
||||
return NULL;
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
|
||||
caps = gst_caps_new_simple ("video/x-raw-rgb",
|
||||
|
@ -977,7 +977,7 @@ gst_video_format_to_fourcc (GstVideoFormat format)
|
|||
* @blue_mask: blue bit mask
|
||||
*
|
||||
* Converts red, green, blue bit masks into the corresponding
|
||||
* #GstVideoFormat.
|
||||
* #GstVideoFormat.
|
||||
*
|
||||
* Since: 0.10.16
|
||||
*
|
||||
|
@ -1216,7 +1216,7 @@ gst_video_format_is_gray (GstVideoFormat format)
|
|||
/**
|
||||
* gst_video_format_has_alpha:
|
||||
* @format: a #GstVideoFormat
|
||||
*
|
||||
*
|
||||
* Returns TRUE or FALSE depending on if the video format provides an
|
||||
* alpha channel.
|
||||
*
|
||||
|
@ -1278,9 +1278,10 @@ gst_video_format_has_alpha (GstVideoFormat format)
|
|||
/**
|
||||
* gst_video_format_get_component_depth:
|
||||
* @format: a #GstVideoFormat
|
||||
*
|
||||
* @component: the video component (e.g. 0 for 'R' in RGB)
|
||||
*
|
||||
* Returns the number of bits used to encode an individual pixel of
|
||||
* a given component. Typically this is 8, although higher and lower
|
||||
* a given @component. Typically this is 8, although higher and lower
|
||||
* values are possible for some formats.
|
||||
*
|
||||
* Since: 0.10.33
|
||||
|
@ -1767,7 +1768,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
GST_ROUND_UP_4 (GST_ROUND_UP_2 (width) / 2) *
|
||||
(GST_ROUND_UP_2 (height) / 2);
|
||||
}
|
||||
return 0;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_YV12: /* same as I420, but components 1+2 swapped */
|
||||
if (component == 0)
|
||||
return 0;
|
||||
|
@ -1778,7 +1779,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
GST_ROUND_UP_4 (GST_ROUND_UP_2 (width) / 2) *
|
||||
(GST_ROUND_UP_2 (height) / 2);
|
||||
}
|
||||
return 0;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_YUY2:
|
||||
if (component == 0)
|
||||
return 0;
|
||||
|
@ -1786,7 +1787,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
return 1;
|
||||
if (component == 2)
|
||||
return 3;
|
||||
return 0;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_YVYU:
|
||||
if (component == 0)
|
||||
return 0;
|
||||
|
@ -1794,7 +1795,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
return 3;
|
||||
if (component == 2)
|
||||
return 1;
|
||||
return 0;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_UYVY:
|
||||
if (component == 0)
|
||||
return 1;
|
||||
|
@ -1802,7 +1803,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
return 0;
|
||||
if (component == 2)
|
||||
return 2;
|
||||
return 0;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_AYUV:
|
||||
if (component == 0)
|
||||
return 1;
|
||||
|
@ -1812,7 +1813,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
return 3;
|
||||
if (component == 3)
|
||||
return 0;
|
||||
return 0;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_RGBx:
|
||||
case GST_VIDEO_FORMAT_RGBA:
|
||||
if (component == 0)
|
||||
|
@ -1823,7 +1824,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
return 2;
|
||||
if (component == 3)
|
||||
return 3;
|
||||
return 0;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_BGRx:
|
||||
case GST_VIDEO_FORMAT_BGRA:
|
||||
if (component == 0)
|
||||
|
@ -1834,7 +1835,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
return 0;
|
||||
if (component == 3)
|
||||
return 3;
|
||||
return 0;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_xRGB:
|
||||
case GST_VIDEO_FORMAT_ARGB:
|
||||
if (component == 0)
|
||||
|
@ -1845,7 +1846,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
return 3;
|
||||
if (component == 3)
|
||||
return 0;
|
||||
return 0;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_xBGR:
|
||||
case GST_VIDEO_FORMAT_ABGR:
|
||||
if (component == 0)
|
||||
|
@ -1856,7 +1857,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
return 1;
|
||||
if (component == 3)
|
||||
return 0;
|
||||
return 0;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_RGB:
|
||||
case GST_VIDEO_FORMAT_v308:
|
||||
if (component == 0)
|
||||
|
@ -1865,7 +1866,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
return 1;
|
||||
if (component == 2)
|
||||
return 2;
|
||||
return 0;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_BGR:
|
||||
if (component == 0)
|
||||
return 2;
|
||||
|
@ -1873,7 +1874,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
return 1;
|
||||
if (component == 2)
|
||||
return 0;
|
||||
return 0;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_Y41B:
|
||||
if (component == 0)
|
||||
return 0;
|
||||
|
@ -1882,7 +1883,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
if (component == 2)
|
||||
return (GST_ROUND_UP_4 (width) +
|
||||
(GST_ROUND_UP_16 (width) / 4)) * height;
|
||||
return 0;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_Y42B:
|
||||
if (component == 0)
|
||||
return 0;
|
||||
|
@ -1890,7 +1891,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
return GST_ROUND_UP_4 (width) * height;
|
||||
if (component == 2)
|
||||
return (GST_ROUND_UP_4 (width) + (GST_ROUND_UP_8 (width) / 2)) * height;
|
||||
return 0;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_Y444:
|
||||
return GST_ROUND_UP_4 (width) * height * component;
|
||||
case GST_VIDEO_FORMAT_v210:
|
||||
|
@ -1904,7 +1905,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
return 2;
|
||||
if (component == 2)
|
||||
return 6;
|
||||
return 0;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_NV12:
|
||||
if (component == 0)
|
||||
return 0;
|
||||
|
@ -1912,6 +1913,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
return GST_ROUND_UP_4 (width) * GST_ROUND_UP_2 (height);
|
||||
if (component == 2)
|
||||
return GST_ROUND_UP_4 (width) * GST_ROUND_UP_2 (height) + 1;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_NV21:
|
||||
if (component == 0)
|
||||
return 0;
|
||||
|
@ -1919,6 +1921,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
return GST_ROUND_UP_4 (width) * GST_ROUND_UP_2 (height) + 1;
|
||||
if (component == 2)
|
||||
return GST_ROUND_UP_4 (width) * GST_ROUND_UP_2 (height);
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_GRAY8:
|
||||
case GST_VIDEO_FORMAT_GRAY16_BE:
|
||||
case GST_VIDEO_FORMAT_GRAY16_LE:
|
||||
|
@ -1943,6 +1946,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
2 * GST_ROUND_UP_4 (GST_ROUND_UP_2 (width) / 2) *
|
||||
(GST_ROUND_UP_2 (height) / 2);
|
||||
}
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_RGB8_PALETTED:
|
||||
return 0;
|
||||
case GST_VIDEO_FORMAT_YUV9:
|
||||
|
@ -1955,7 +1959,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
GST_ROUND_UP_4 (GST_ROUND_UP_4 (width) / 4) *
|
||||
(GST_ROUND_UP_4 (height) / 4);
|
||||
}
|
||||
return 0;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_YVU9:
|
||||
if (component == 0)
|
||||
return 0;
|
||||
|
@ -1966,7 +1970,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
}
|
||||
if (component == 2)
|
||||
return GST_ROUND_UP_4 (width) * height;
|
||||
return 0;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_IYU1:
|
||||
if (component == 0)
|
||||
return 1;
|
||||
|
@ -1974,6 +1978,7 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
return 0;
|
||||
if (component == 2)
|
||||
return 4;
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_ARGB64:
|
||||
case GST_VIDEO_FORMAT_AYUV64:
|
||||
if (component == 0)
|
||||
|
@ -1984,10 +1989,12 @@ gst_video_format_get_component_offset (GstVideoFormat format,
|
|||
return 6;
|
||||
if (component == 3)
|
||||
return 0;
|
||||
return 0;
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
GST_WARNING ("unhandled format %d or component %d", format, component);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -16,6 +16,32 @@
|
|||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
/**
|
||||
* SECTION:element-appsrc
|
||||
*
|
||||
* The appsrc element can be used by applications to insert data into a
|
||||
* GStreamer pipeline. Unlike most GStreamer elements, Appsrc provides
|
||||
* external API functions.
|
||||
*
|
||||
* For the documentation of the API, please see the
|
||||
* <link linkend="gst-plugins-base-libs-appsrc">libgstapp</link> section in the
|
||||
* GStreamer Plugins Base Libraries documentation.
|
||||
*
|
||||
* Since: 0.10.22
|
||||
*/
|
||||
/**
|
||||
* SECTION:element-appsink
|
||||
*
|
||||
* Appsink is a sink plugin that supports many different methods for making
|
||||
* the application get a handle on the GStreamer data in a pipeline. Unlike
|
||||
* most GStreamer elements, Appsink provides external API functions.
|
||||
*
|
||||
* For the documentation of the API, please see the
|
||||
* <link linkend="gst-plugins-base-libs-appsink">libgstapp</link> section in
|
||||
* the GStreamer Plugins Base Libraries documentation.
|
||||
*
|
||||
* Since: 0.10.22
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
|
|
|
@ -1203,7 +1203,8 @@ gst_sub_parse_data_format_autodetect_regex_once (GstSubParseRegex regtype)
|
|||
switch (regtype) {
|
||||
case GST_SUB_PARSE_REGEX_MDVDSUB:
|
||||
result =
|
||||
(gpointer) g_regex_new ("^\\{[0-9]+\\}\\{[0-9]+\\}", 0, 0, &gerr);
|
||||
(gpointer) g_regex_new ("^\\{[0-9]+\\}\\{[0-9]+\\}",
|
||||
G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, &gerr);
|
||||
if (result == NULL) {
|
||||
g_warning ("Compilation of mdvd regex failed: %s", gerr->message);
|
||||
g_error_free (gerr);
|
||||
|
@ -1213,7 +1214,7 @@ gst_sub_parse_data_format_autodetect_regex_once (GstSubParseRegex regtype)
|
|||
result = (gpointer) g_regex_new ("^([ 0-9]){0,3}[0-9]\\s*(\x0d)?\x0a"
|
||||
"[ 0-9][0-9]:[ 0-9][0-9]:[ 0-9][0-9][,.][ 0-9]{0,2}[0-9]"
|
||||
" +--> +([ 0-9])?[0-9]:[ 0-9][0-9]:[ 0-9][0-9][,.][ 0-9]{0,2}[0-9]",
|
||||
0, 0, &gerr);
|
||||
G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, &gerr);
|
||||
if (result == NULL) {
|
||||
g_warning ("Compilation of subrip regex failed: %s", gerr->message);
|
||||
g_error_free (gerr);
|
||||
|
@ -1221,7 +1222,7 @@ gst_sub_parse_data_format_autodetect_regex_once (GstSubParseRegex regtype)
|
|||
break;
|
||||
case GST_SUB_PARSE_REGEX_DKS:
|
||||
result = (gpointer) g_regex_new ("^\\[[0-9]+:[0-9]+:[0-9]+\\].*",
|
||||
0, 0, &gerr);
|
||||
G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, &gerr);
|
||||
if (result == NULL) {
|
||||
g_warning ("Compilation of dks regex failed: %s", gerr->message);
|
||||
g_error_free (gerr);
|
||||
|
@ -1741,12 +1742,7 @@ gst_subparse_type_find (GstTypeFind * tf, gpointer private)
|
|||
}
|
||||
}
|
||||
converted_str = gst_convert_to_utf8 (str, 128, enc, &tmp, &err);
|
||||
if (converted_str == NULL) {
|
||||
GST_DEBUG ("Charset conversion failed: %s", err->message);
|
||||
g_error_free (err);
|
||||
g_free (str);
|
||||
return;
|
||||
} else {
|
||||
if (converted_str != NULL) {
|
||||
g_free (str);
|
||||
str = converted_str;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue