By default the target caps are:
- _ Raw audio : audio/x-raw-int, audio/x-raw-float
+ _ Raw audio : audio/x-raw
- _ and raw video : video/x-raw-rgb, video/x-raw-yuv
+ _ and raw video : video/x-raw
_ and Text : text/plain, text/x-pango-markup
* Uncompressed (but maybe subsampled)
* Compressed
* Audio
- * Uncompressed (audio/x-raw-{int|float})
+ * Uncompressed (audio/x-raw)
* Compressed
* Timed text
* Private streams
<type>audio</type>
<format>audio/mpeg,mpegversion=4</format>
<preset>Quality High/Main</preset>
- <restriction>audio/x-raw-int,channels=[1,2]</restriction>
+ <restriction>audio/x-raw,channels=[1,2]</restriction>
<presence>1</presence>
</stream-profile>
<stream-profile>
<format>video/x-h264</format>
<preset>Profile Baseline/Quality High</preset>
<restriction>
- video/x-raw-yuv,width=[16, 800],\
+ video/x-raw,width=[16, 800],\
height=[16, 480],framerate=[1/1, 30000/1001]
</restriction>
<presence>1</presence>
TEST: should these look (roughly) alike (note text distortion) - needs fixing in textoverlay
gst-launch-0.10 \
- videotestsrc ! video/x-raw-yuv,width=640,height=480,pixel-aspect-ratio=1/1 ! textoverlay text=Hello font-desc=72 ! xvimagesink \
- videotestsrc ! video/x-raw-yuv,width=320,height=480,pixel-aspect-ratio=2/1 ! textoverlay text=Hello font-desc=72 ! xvimagesink \
- videotestsrc ! video/x-raw-yuv,width=640,height=240,pixel-aspect-ratio=1/2 ! textoverlay text=Hello font-desc=72 ! xvimagesink
+ videotestsrc ! video/x-raw,width=640,height=480,pixel-aspect-ratio=1/1 ! textoverlay text=Hello font-desc=72 ! xvimagesink \
+ videotestsrc ! video/x-raw,width=320,height=480,pixel-aspect-ratio=2/1 ! textoverlay text=Hello font-desc=72 ! xvimagesink \
+ videotestsrc ! video/x-raw,width=640,height=240,pixel-aspect-ratio=1/2 ! textoverlay text=Hello font-desc=72 ! xvimagesink
~~~ THE END ~~~
- test different strides using
-gst-launch -v videotestsrc ! video/x-raw-yuv,width=320,height=240,format=\(fourcc\)UYVY ! videoscale ! video/x-raw-yuv,width=328,height=240 ! xvimagesink
-gst-launch -v videotestsrc ! video/x-raw-yuv,width=320,height=240,format=\(fourcc\)UYVY ! videoscale ! video/x-raw-yuv,width=324,height=240 ! xvimagesink
-gst-launch -v videotestsrc ! video/x-raw-yuv,width=320,height=240,format=\(fourcc\)UYVY ! videoscale ! video/x-raw-yuv,width=322,height=240 ! xvimagesink
-gst-launch -v videotestsrc ! video/x-raw-yuv,width=320,height=240,format=\(fourcc\)UYVY ! videoscale ! video/x-raw-yuv,width=321,height=240 ! xvimagesink
+gst-launch -v videotestsrc ! video/x-raw,width=320,height=240,format=UYVY ! videoscale ! video/x-raw,width=328,height=240 ! xvimagesink
+gst-launch -v videotestsrc ! video/x-raw,width=320,height=240,format=UYVY ! videoscale ! video/x-raw,width=324,height=240 ! xvimagesink
+gst-launch -v videotestsrc ! video/x-raw,width=320,height=240,format=UYVY ! videoscale ! video/x-raw,width=322,height=240 ! xvimagesink
+gst-launch -v videotestsrc ! video/x-raw,width=320,height=240,format=UYVY ! videoscale ! video/x-raw,width=321,height=240 ! xvimagesink
#include <gst/app/gstappsink.h>
/* these are the caps we are going to pass through the appsink and appsrc */
-const gchar *audio_caps =
- "audio/x-raw-int,channels=1,rate=8000,signed=(boolean)true,width=16,depth=16,endianness=1234";
+const gchar *audio_caps = "audio/x-raw,format=S16LE,channels=1,rate=8000";
typedef struct
{
/* prepare mixer channel */
filesrc = gst_element_factory_make ("filesrc", NULL);
- decodebin = gst_element_factory_make ("decodebin2", NULL);
+ decodebin = gst_element_factory_make ("decodebin", NULL);
volume = gst_element_factory_make ("volume", NULL);
convert = gst_element_factory_make ("audioconvert", NULL);
format = gst_element_factory_make ("capsfilter", NULL);
g_object_set (filesrc, "location", file_name, NULL);
g_object_set (volume, "volume", (num_vol == 0) ? 1.0 : 0.0, NULL);
- caps = gst_caps_from_string ("audio/x-raw-int, "
- "channels = (int) 2, "
- "endianness = (int) BYTE_ORDER, "
- "width = (int) 16, " "depth = (int) 16, " "signed = (boolean) true");
+ caps = gst_caps_from_string ("audio/x-raw, "
+ "format = (string) S16LE, " "channels = (int) 2");
g_object_set (format, "caps", caps, NULL);
gst_caps_unref (caps);
g_assert (audiocaps);
caps =
- gst_caps_from_string
- ("audio/x-raw-int,signed=true,width=16,depth=16,rate=48000,channels=1");
+ gst_caps_from_string ("audio/x-raw,format=S16LE,rate=48000,channels=1");
g_object_set (audiocaps, "caps", caps, NULL);
gst_caps_unref (caps);
/* make caps */
capslist[0] =
- gst_caps_from_string
- ("audio/x-raw-int,signed=true,width=16,depth=16,rate=48000,channels=1");
+ gst_caps_from_string ("audio/x-raw,format=S16LE,rate=48000,channels=1");
capslist[1] =
- gst_caps_from_string
- ("audio/x-raw-int,signed=true,width=16,depth=16,rate=16000,channels=1");
+ gst_caps_from_string ("audio/x-raw,format=S16LE,rate=16000,channels=1");
capslist[2] =
- gst_caps_from_string
- ("audio/x-raw-int,signed=true,width=16,depth=16,rate=8000,channels=1");
+ gst_caps_from_string ("audio/x-raw,format=S16LE,rate=8000,channels=1");
/* create encoder elements */
for (i = 0; i < 3; i++) {
convert = gst_element_factory_make ("audioconvert", "convert");
sink = gst_element_factory_make ("autoaudiosink", "sink");
- caps = gst_caps_new_simple ("audio/x-raw-int",
- "endianness", G_TYPE_INT, G_LITTLE_ENDIAN,
- "channels", G_TYPE_INT, 1,
- "width", G_TYPE_INT, 16,
- "depth", G_TYPE_INT, 16,
- "rate", G_TYPE_INT, 44100, "signed", G_TYPE_BOOLEAN, TRUE, NULL);
+ caps = gst_caps_new_simple ("audio/x-raw",
+ "format", G_TYPE_STRING, "S16LE",
+ "channels", G_TYPE_INT, 1, "rate", G_TYPE_INT, 44100, NULL);
g_object_set (filter, "caps", caps, NULL);
gst_caps_unref (caps);
convert = gst_element_factory_make ("audioconvert", "convert");
sink = gst_element_factory_make ("autoaudiosink", "sink");
- caps = gst_caps_new_simple ("audio/x-raw-int",
- "endianness", G_TYPE_INT, G_LITTLE_ENDIAN,
- "channels", G_TYPE_INT, 2,
- "width", G_TYPE_INT, 16,
- "depth", G_TYPE_INT, 16,
- "rate", G_TYPE_INT, 44100, "signed", G_TYPE_BOOLEAN, TRUE, NULL);
+ caps = gst_caps_new_simple ("audio/x-raw",
+ "format", G_TYPE_STRING, "S16LE",
+ "channels", G_TYPE_INT, 2, "rate", G_TYPE_INT, 44100, NULL);
g_object_set (filter, "caps", caps, NULL);
gst_caps_unref (caps);
convert = gst_element_factory_make ("audioconvert", "convert");
sink = gst_element_factory_make ("autoaudiosink", "sink");
- caps = gst_caps_new_simple ("audio/x-raw-int",
- "endianness", G_TYPE_INT, G_LITTLE_ENDIAN,
- "channels", G_TYPE_INT, 2,
- "width", G_TYPE_INT, 16,
- "depth", G_TYPE_INT, 16,
- "rate", G_TYPE_INT, 44100, "signed", G_TYPE_BOOLEAN, TRUE, NULL);
+ caps = gst_caps_new_simple ("audio/x-raw",
+ "format", G_TYPE_STRING, "S16LE",
+ "channels", G_TYPE_INT, 2, "rate", G_TYPE_INT, 44100, NULL);
g_object_set (filter, "caps", caps, NULL);
gst_caps_unref (caps);
/* And append to list without duplicates */
while ((st = gst_caps_steal_structure (res, 0))) {
/* Skip fake codecs/containers */
- if (gst_structure_has_name (st, "audio/x-raw-int") ||
- gst_structure_has_name (st, "audio/x-raw-float") ||
- gst_structure_has_name (st, "video/x-raw-yuv") ||
- gst_structure_has_name (st, "video/x-raw-rgb") ||
+ if (gst_structure_has_name (st, "audio/x-raw") ||
+ gst_structure_has_name (st, "video/x-raw") ||
gst_structure_has_name (st, "unknown/unknown")) {
gst_structure_free (st);
continue;
GstCaps *caps;
/* convert to our desired format (RGB24) */
- caps = gst_caps_new_simple ("video/x-raw-rgb",
- "bpp", G_TYPE_INT, 24, "depth", G_TYPE_INT, 24,
+ caps = gst_caps_new_simple ("video/x-raw", "format", G_TYPE_STRING, "RGB24",
/* Note: we don't ask for a specific width/height here, so that
* videoscale can adjust dimensions from a non-1/1 pixel aspect
* ratio to a 1/1 pixel-aspect-ratio */
- "pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1,
- "endianness", G_TYPE_INT, G_BIG_ENDIAN,
- "red_mask", G_TYPE_INT, 0xff0000,
- "green_mask", G_TYPE_INT, 0x00ff00,
- "blue_mask", G_TYPE_INT, 0x0000ff, NULL);
+ "pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1, NULL);
/* convert the latest frame to the requested format */
g_signal_emit_by_name (pipeline, "convert-frame", caps, &buffer);
#include <stdlib.h>
-#define CAPS "video/x-raw-rgb,width=160,pixel-aspect-ratio=1/1,bpp=(int)24,depth=(int)24,endianness=(int)4321,red_mask=(int)0xff0000, green_mask=(int)0x00ff00, blue_mask=(int)0x0000ff"
+#define CAPS "video/x-raw,format=RGB24,width=160,pixel-aspect-ratio=1/1"
int
main (int argc, char *argv[])
g_object_set (G_OBJECT (src2), "pattern", 1, NULL);
capsfilter = gst_element_factory_make ("capsfilter", "caps0");
g_object_set (G_OBJECT (capsfilter), "caps",
- gst_caps_from_string ("video/x-raw-rgb,width=640,height=480"), NULL);
+ gst_caps_from_string ("video/x-raw,width=640,height=480"), NULL);
video_switch = gst_element_factory_make ("input-selector", "video_switch");
segment = gst_element_factory_make ("identity", "identity-segment");
g_object_set (G_OBJECT (segment), "silent", TRUE, NULL);
/* we prefer our fixed width and height but allow other dimensions to pass
* as well */
capsstr =
- g_strdup_printf ("video/x-raw-rgb, width=(int)%d, height=(int)%d;"
- "video/x-raw-rgb", width, height);
+ g_strdup_printf ("video/x-raw, width=(int)%d, height=(int)%d;"
+ "video/x-raw", width, height);
caps = gst_caps_from_string (capsstr);
g_free (capsstr);
g_object_set (filter, "caps", caps, NULL);
gint a, b, c;
pstr = g_strdup_printf ("videotestsrc pattern=blue ! "
- "video/x-raw-yuv,width=%d,height=%d ! t.video_sink "
+ "video/x-raw,width=%d,height=%d ! t.video_sink "
"textoverlay name=t font-desc=\"Sans Serif, 20\" ! "
" videoconvert ! videoscale ! autovideosink", width, height);