[gst-devel] v4l2src problem ?

Dave Baker dave at accidentalegg.co.uk
Wed Aug 24 08:04:38 CEST 2005


I think the video/x-raw-rgb caps are there for tv cards that supply their 
video in rgb (different cards / drivers support different sets of output 
formats). I might be talking rubbish here, but I believe if you put the 
ffmpegcolorspace before the video/x-raw-rgb type-find, it'll convert the 
video to RGB as you want (you might need another one after to convert it back 
to whatever ximagesink wants though!)

(Bear in mind here that I'm not a GStreamer developer and don't claim any 
authority on the matter!)


Dave



On Wednesday 24 August 2005 15:36, berti wrote:
> I'm trying to build a pipe between my TV card and my screen where at least
> one part of the pipe have the format "video/x-raw-rgb, bpp=24,
> red_mask=(int)255" to insert a plugin I will (one day) develop.
>
> My problem is the following: when I use
> $ gst-launch-0.8 -v videotestsrc ! video/x-raw-rgb,bpp=24,
> red_mask=(int)255 ! ffmpegcolorspace ! ximagesink
>
> it works good. But when I try
> $gst-launch-0.8 -v v4l2src device=/dev/video1 ! video/x-raw-rgb, bpp=24,
> red_mask=(int)255 ! ffmpegcolorspace ! ximagesink
> I get the following error
> EXECUTION du tube en cours ...
> /pipeline0/v4l2src0: norm = "PAL"
> /pipeline0/v4l2src0: channel = "Television"
> /pipeline0/v4l2src0: frequency = 294249984
> /pipeline0/v4l2src0: num-buffers = 2
> /pipeline0/v4l2src0.src: caps = video/x-raw-rgb, bpp=(int)24,
> depth=(int)24, red_mask=(int)255, green_mask=(int)65280,
> blue_mask=(int)16711680, endianness=(int)4321, width=(int)720,
> height=(int)576, framerate=(double)25, pixel-aspect-ratio=(fraction)1/1
> /pipeline0/ffmpegcolorspace0.sink: caps = video/x-raw-rgb, bpp=(int)24,
> depth=(int)24, red_mask=(int)255, green_mask=(int)65280, blue_mask=(int)
> 16711680, endianness=(int)4321, width=(int)720, height=(int)576,
> framerate=(double)25, pixel-aspect-ratio=(fraction)1/1
> ERROR: from element /pipeline0/v4l2src0: Could not get buffers from device
> "/dev/video1".
> Additional debug info:
> v4l2src_calls.c(259): gst_v4l2src_capture_init: /pipeline0/v4l2src0:
> error requesting 2 buffers: Périphérique ou ressource occupé
> ERROR: from element /pipeline0/v4l2src0: Could not get buffers from device
> "/dev/video1".
> Additional debug info:
> v4l2src_calls.c(259): gst_v4l2src_capture_init: /pipeline0/v4l2src0:
> error requesting 2 buffers: Périphérique ou ressource occupé
>
> (process:25866): GStreamer-WARNING **: pads don't accept old caps. We
> assume they did though
> ERREUR: le tube refuse de s'executer.
> /pipeline0/v4l2src0.src: caps = NULL
> /pipeline0/ffmpegcolorspace0.sink: caps = NULL
>
>
> Why does this error occur ? I thought v4l2src must be able to provide the
> format asked
> $gst-inspect-0.8 v4l2src
> [...]
>     video/x-raw-rgb
>                     bpp: 24
>                   depth: 24
>                red_mask: 255
>              green_mask: 65280
>               blue_mask: 16711680
>              endianness: 4321
>                   width: [ 1, 4096 ]
>                  height: [ 1, 4096 ]
>               framerate: [ 0, 1.7976931348623157e+308 ]
> [...]
>
>
> Is this a bug of v4l2src or something else ?
>
> Moreover, is somebody able to link a v4l2src to the screen passing through
> "video/x-raw-rgb, bpp=24, red_mask=(int)255" format ?




More information about the gstreamer-devel mailing list