diff options
| author | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2003-12-21 18:44:34 +0000 |
|---|---|---|
| committer | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2003-12-21 18:44:34 +0000 |
| commit | ae91d7c7171c56667ec1b36ea2ecc17a76c4cff4 (patch) | |
| tree | 99f667d57eca98ba1ed53bf4a724ef5423bfc0f3 /gst | |
| parent | 4dbdabd716ae144f1c2adf72c6c57e5f9e064c99 (diff) | |
configure.ac: Improve mpeg2enc detection. This is for distributions that do ship mjpegtools, but without mpeg2enc. Al...
Original commit message from CVS:
2003-12-21 Ronald Bultje <rbultje@ronald.bitfreak.net>
* configure.ac:
Improve mpeg2enc detection. This is for distributions that do
ship mjpegtools, but without mpeg2enc. Also does object check
for might there ever be ABI incompatibility.
* ext/mpeg2enc/gstmpeg2enc.cc:
Add Andrew as second maintainer (he's helping me), and also add
an error if no caps was set. This happens if I pull before capsnego
and that's something I should solve sometime else.
* gst/matroska/matroska-demux.c:
(gst_matroska_demux_parse_blockgroup):
Fix time parsing.
* gst/matroska/matroska-mux.c: (gst_matroska_mux_audio_pad_link),
(gst_matroska_mux_track_header):
Add caps to templates.
* gst/mpegaudioparse/gstmpegaudioparse.c: (mp3_sink_factory):
Add mpegversion=1 to prevent confusion with MPEG/AAC.
* gst/mpegstream/gstmpegdemux.c:
Remove layer since it causes warnings about unfixed caps.
* gst/videotestsrc/gstvideotestsrc.c: (gst_videotestsrc_get):
Fix obvious typo (we error out if caps were set, we should of
course error out if *no* caps were set).
* sys/oss/gstosselement.c: (gst_osselement_convert):
Fix format conversion, we confused bits/bytes.
* sys/oss/gstosselement.h:
Improve documentation for 'bps'.
* sys/v4l/TODO:
Remove stuff about plugins that need removing - this was done
ages ago.
* sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_init),
(gst_v4lmjpegsrc_src_convert), (gst_v4lmjpegsrc_src_query):
* sys/v4l/gstv4lsrc.c: (gst_v4lsrc_init), (gst_v4lsrc_src_convert),
(gst_v4lsrc_src_query):
* sys/v4l2/gstv4l2src.c: (gst_v4l2src_init),
(gst_v4l2src_src_convert), (gst_v4l2src_src_query):
Add get_query_types(), get_formats() and query() functions.
Diffstat (limited to 'gst')
| -rw-r--r-- | gst/matroska/matroska-demux.c | 7 | ||||
| -rw-r--r-- | gst/matroska/matroska-mux.c | 91 |
2 files changed, 86 insertions, 12 deletions
diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c index dafb72aa..a495de65 100644 --- a/gst/matroska/matroska-demux.c +++ b/gst/matroska/matroska-demux.c @@ -1617,7 +1617,7 @@ gst_matroska_demux_parse_blockgroup (GstMatroskaDemux *demux, case GST_MATROSKA_ID_BLOCK: { GstBuffer *buf; guint8 *data; - gint16 time; + gint64 time; guint size, *lace_size = NULL; gint n, stream, flags, laces = 0; guint64 num; @@ -1651,10 +1651,7 @@ gst_matroska_demux_parse_blockgroup (GstMatroskaDemux *demux, } /* time (relative to cluster time) */ - time = (* (gint16 *) data) * demux->time_scale; - /* I think this is mis-documented in the matroska sources, we should - * probably shift values (EBML-style) on this value... */ - time = GINT16_FROM_BE (time); + time = (GINT16_FROM_BE (* (gint16 *) data)) * demux->time_scale; data += 2; size -= 2; flags = * (guint8 *) data; data += 1; size -= 1; diff --git a/gst/matroska/matroska-mux.c b/gst/matroska/matroska-mux.c index df63f2a5..0522d875 100644 --- a/gst/matroska/matroska-mux.c +++ b/gst/matroska/matroska-mux.c @@ -51,20 +51,95 @@ GST_PAD_TEMPLATE_FACTORY (src_templ, ) ) -/* FIXME: caps */ +#define COMMON_VIDEO_PROPERTIES \ + "width", GST_PROPS_INT_RANGE (16, 4096), \ + "height", GST_PROPS_INT_RANGE (16, 4096), \ + "framerate", GST_PROPS_FLOAT_RANGE (0, G_MAXFLOAT) GST_PAD_TEMPLATE_FACTORY (videosink_templ, "video_%d", GST_PAD_SINK, GST_PAD_REQUEST, - NULL + GST_CAPS_NEW ("matroska_video_sink_mpeg", + "video/mpeg", + "mpegversion", GST_PROPS_LIST ( + GST_PROPS_INT (1), + GST_PROPS_INT (2), + GST_PROPS_INT (4) + ), + "systemstream", GST_PROPS_BOOLEAN (FALSE), + COMMON_VIDEO_PROPERTIES), + GST_CAPS_NEW ("matroska_video_sink_divx", + "video/x-divx", + "divxversion", GST_PROPS_INT_RANGE (3, 5), + COMMON_VIDEO_PROPERTIES), + GST_CAPS_NEW ("matroska_video_sink_xvid", + "video/x-xvid", + COMMON_VIDEO_PROPERTIES), + GST_CAPS_NEW ("matroska_video_sink_msmpeg4v3", + "video/x-msmpeg", + "msmpegversion", GST_PROPS_INT (43), + COMMON_VIDEO_PROPERTIES), + GST_CAPS_NEW ("matroska_video_sink_jpeg", + "video/x-jpeg", + COMMON_VIDEO_PROPERTIES), + GST_CAPS_NEW ("matroska_video_sink_rawyuv", + "video/x-raw-yuv", + "format", GST_PROPS_LIST ( + GST_PROPS_FOURCC (GST_MAKE_FOURCC ('Y','U','Y','2')), + GST_PROPS_FOURCC (GST_MAKE_FOURCC ('I','4','2','0')) + ), + COMMON_VIDEO_PROPERTIES) ) +#define COMMON_AUDIO_PROPERTIES \ + "channels", GST_PROPS_INT_RANGE (1, 8), \ + "rate", GST_PROPS_INT_RANGE (8000, 96000) + +/* FIXME: + * * audio/x-raw-float: endianness needs defining. + * * audio/x-vorbis: private data setup needs work. + */ GST_PAD_TEMPLATE_FACTORY (audiosink_templ, "audio_%d", GST_PAD_SINK, GST_PAD_REQUEST, - NULL + GST_CAPS_NEW ("matroska_audio_sink_mpeg1", + "audio/mpeg", + "mpegversion", GST_PROPS_INT (1), + "layer", GST_PROPS_INT_RANGE (1, 3), + COMMON_AUDIO_PROPERTIES), + GST_CAPS_NEW ("matroska_audio_sink_mpeg24", + "audio/mpeg", + "mpegversion", GST_PROPS_LIST ( + GST_PROPS_INT (2), + GST_PROPS_INT (4) + ), + COMMON_AUDIO_PROPERTIES), + GST_CAPS_NEW ("matroska_audio_sink_ac3", + "audio/x-ac3", + COMMON_AUDIO_PROPERTIES), + GST_CAPS_NEW ("matroska_audio_sink_raw_int", + "audio/x-raw-int", + "width", GST_PROPS_LIST ( + GST_PROPS_INT (8), + GST_PROPS_INT (16), + GST_PROPS_INT (24) + ), + "depth", GST_PROPS_LIST ( + GST_PROPS_INT (8), + GST_PROPS_INT (16), + GST_PROPS_INT (24) + ), + "endianness", GST_PROPS_LIST ( + GST_PROPS_INT (G_BIG_ENDIAN), + GST_PROPS_INT (G_LITTLE_ENDIAN) + ), + "signed", GST_PROPS_LIST ( + GST_PROPS_BOOLEAN (TRUE), + GST_PROPS_BOOLEAN (FALSE) + ), + COMMON_AUDIO_PROPERTIES) ) GST_PAD_TEMPLATE_FACTORY (subtitlesink_templ, @@ -413,7 +488,7 @@ gst_matroska_mux_audio_pad_link (GstPad *pad, NULL); audiocontext->samplerate = samplerate; audiocontext->channels = channels; - audiocontext->bitdepth = 16; + audiocontext->bitdepth = 0; if (!strcmp (mimetype, "audio/mpeg")) { gint mpegversion = 0; @@ -459,7 +534,7 @@ gst_matroska_mux_audio_pad_link (GstPad *pad, "signed", &signedness, NULL); if (width != depth || - (width == 8 && signedness) || (width == 16 && !signedness)) + (width == 8 && signedness) || (width != 8 && !signedness)) continue; audiocontext->bitdepth = depth; @@ -602,8 +677,10 @@ gst_matroska_mux_track_header (GstMatroskaMux *mux, if (audiocontext->channels != 1) gst_ebml_write_uint (ebml, GST_MATROSKA_ID_AUDIOCHANNELS, audiocontext->channels); - gst_ebml_write_uint (ebml, GST_MATROSKA_ID_AUDIOBITDEPTH, - audiocontext->bitdepth); + if (audiocontext->bitdepth) { + gst_ebml_write_uint (ebml, GST_MATROSKA_ID_AUDIOBITDEPTH, + audiocontext->bitdepth); + } gst_ebml_write_master_finish (ebml, master); break; |
