mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-22 08:17:01 +00:00
VideoInfo, AudioInfo: fix usage with python bindings
* Expose an actual constructor from caps * Error out in overrides for code that was using the "manual allocation" pattern which only worked by chance. Direct the script writer to the new_from_caps constructor instead. Fixes https://gitlab.freedesktop.org/gstreamer/gst-python/-/issues/47 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1571>
This commit is contained in:
parent
6838742801
commit
830d1595b9
7 changed files with 83 additions and 1 deletions
|
@ -320,6 +320,28 @@ invalid_channel_mask:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_audio_info_new_from_caps:
|
||||||
|
* @caps: a #GstCaps
|
||||||
|
*
|
||||||
|
* Parse @caps to generate a #GstAudioInfo.
|
||||||
|
*
|
||||||
|
* Returns: A #GstAudioInfo, or %NULL if @caps couldn't be parsed
|
||||||
|
* Since: 1.20
|
||||||
|
*/
|
||||||
|
GstAudioInfo *
|
||||||
|
gst_audio_info_new_from_caps (const GstCaps * caps)
|
||||||
|
{
|
||||||
|
GstAudioInfo *ret = gst_audio_info_new ();
|
||||||
|
|
||||||
|
if (gst_audio_info_from_caps (ret, caps)) {
|
||||||
|
return ret;
|
||||||
|
} else {
|
||||||
|
gst_audio_info_free (ret);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gst_audio_info_to_caps:
|
* gst_audio_info_to_caps:
|
||||||
* @info: a #GstAudioInfo
|
* @info: a #GstAudioInfo
|
||||||
|
|
|
@ -104,6 +104,9 @@ GType gst_audio_info_get_type (void);
|
||||||
GST_AUDIO_API
|
GST_AUDIO_API
|
||||||
GstAudioInfo * gst_audio_info_new (void);
|
GstAudioInfo * gst_audio_info_new (void);
|
||||||
|
|
||||||
|
GST_AUDIO_API
|
||||||
|
GstAudioInfo * gst_audio_info_new_from_caps (const GstCaps * caps);
|
||||||
|
|
||||||
GST_AUDIO_API
|
GST_AUDIO_API
|
||||||
void gst_audio_info_init (GstAudioInfo *info);
|
void gst_audio_info_init (GstAudioInfo *info);
|
||||||
|
|
||||||
|
|
|
@ -568,6 +568,28 @@ alternate_no_feature:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_video_info_new_from_caps:
|
||||||
|
* @caps: a #GstCaps
|
||||||
|
*
|
||||||
|
* Parse @caps to generate a #GstVideoInfo.
|
||||||
|
*
|
||||||
|
* Returns: A #GstVideoInfo, or %NULL if @caps couldn't be parsed
|
||||||
|
* Since: 1.20
|
||||||
|
*/
|
||||||
|
GstVideoInfo *
|
||||||
|
gst_video_info_new_from_caps (const GstCaps * caps)
|
||||||
|
{
|
||||||
|
GstVideoInfo *ret = gst_video_info_new ();
|
||||||
|
|
||||||
|
if (gst_video_info_from_caps (ret, caps)) {
|
||||||
|
return ret;
|
||||||
|
} else {
|
||||||
|
gst_video_info_free (ret);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gst_video_info_is_equal:
|
* gst_video_info_is_equal:
|
||||||
* @info: a #GstVideoInfo
|
* @info: a #GstVideoInfo
|
||||||
|
|
|
@ -436,6 +436,9 @@ GstVideoInfo * gst_video_info_copy (const GstVideoInfo *info);
|
||||||
GST_VIDEO_API
|
GST_VIDEO_API
|
||||||
void gst_video_info_free (GstVideoInfo *info);
|
void gst_video_info_free (GstVideoInfo *info);
|
||||||
|
|
||||||
|
GST_VIDEO_API
|
||||||
|
GstVideoInfo * gst_video_info_new_from_caps (const GstCaps * caps);
|
||||||
|
|
||||||
GST_VIDEO_API
|
GST_VIDEO_API
|
||||||
gboolean gst_video_info_set_format (GstVideoInfo *info, GstVideoFormat format,
|
gboolean gst_video_info_set_format (GstVideoInfo *info, GstVideoFormat format,
|
||||||
guint width, guint height);
|
guint width, guint height);
|
||||||
|
|
16
subprojects/gst-python/gi/overrides/GstAudio.py
Normal file
16
subprojects/gst-python/gi/overrides/GstAudio.py
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
from ..module import get_introspection_module
|
||||||
|
|
||||||
|
import gi
|
||||||
|
gi.require_version('Gst', '1.0')
|
||||||
|
|
||||||
|
from gi.repository import Gst # noqa
|
||||||
|
|
||||||
|
GstAudio = get_introspection_module('GstAudio')
|
||||||
|
__all__ = []
|
||||||
|
|
||||||
|
|
||||||
|
def __audio_info_from_caps(*args):
|
||||||
|
raise NotImplementedError('AudioInfo.from_caps was removed, use AudioInfo.new_from_caps instead')
|
||||||
|
|
||||||
|
|
||||||
|
GstAudio.AudioInfo.from_caps = __audio_info_from_caps
|
16
subprojects/gst-python/gi/overrides/GstVideo.py
Normal file
16
subprojects/gst-python/gi/overrides/GstVideo.py
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
from ..module import get_introspection_module
|
||||||
|
|
||||||
|
import gi
|
||||||
|
gi.require_version('Gst', '1.0')
|
||||||
|
|
||||||
|
from gi.repository import Gst # noqa
|
||||||
|
|
||||||
|
GstVideo = get_introspection_module('GstVideo')
|
||||||
|
__all__ = []
|
||||||
|
|
||||||
|
|
||||||
|
def __video_info_from_caps(*args):
|
||||||
|
raise NotImplementedError('VideoInfo.from_caps was removed, use VideoInfo.new_from_caps instead')
|
||||||
|
|
||||||
|
|
||||||
|
GstVideo.VideoInfo.from_caps = __video_info_from_caps
|
|
@ -1,4 +1,4 @@
|
||||||
pysources = ['Gst.py', 'GstPbutils.py']
|
pysources = ['Gst.py', 'GstPbutils.py', 'GstVideo.py', 'GstAudio.py']
|
||||||
install_data(pysources,
|
install_data(pysources,
|
||||||
install_dir: pygi_override_dir)
|
install_dir: pygi_override_dir)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue