[haiku-development] Re: video_mixer media node

  • From: sami vuokila <varjosanomat@xxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Mon, 28 Jun 2010 01:28:28 +0900

bizarro city

i changed get input & output format to enforce B_RGB32 like this


void VideoMixerNode::GetInputFormat(media_format *outFormat)
{
        fprintf(stderr,"VideoMixerNode::GetInputFormat\n");

        

        if (outFormat != NULL) {
                outFormat->type = B_MEDIA_RAW_VIDEO;
                outFormat->require_flags = B_MEDIA_MAUI_UNDEFINED_FLAGS;
                outFormat->deny_flags = B_MEDIA_MAUI_UNDEFINED_FLAGS;
                outFormat->u.raw_video = media_raw_video_format::wildcard;
                outFormat->u.raw_video.display.format = B_RGB32;
                // = media_raw_video_format::wildcard;
                //outFormat->u.raw_video = media_raw_video_format::wildcard;
        }
}

but still mediaplayer seems to think preferred color space is B_RGB32_BIG

the debug output is quite confusing, what is really going on in there?
Why does it not grok the colorspace im trying to enforce?
on cortex, the video stream (when you open a video file with
mediaplayer) shows as raw B_RGB32. apparently video_mixer returns a
wildcard as the preferred colorspace and mediaplayer does some
weirdness to resolve that wildcard is B_RGB32_big. ??

cheers,
sami


MediaTrackVideoSupplier::_SwitchFormat() - preferred color space: B_RGB24_BIG
CPU is capable of running MMX SSE1 SSE2 SSE3 SSSE3
resolve_colorspace: gfx_conv_yuv420p_rgba32_sse2
MediaTrackVideoSupplier::_SwitchFormat() -  codec changed colorspace
of decoded format (B_RGB24_BIG -> B_RGB32)!
AudioProducer::_FillNextBuffer() - supplier error -> silence
BMediaRoster::ReleaseNode, trying to release reference counting
disabled timesource, node 2, port 348294, team 726
BMediaEventLooper: SchedulingLatency is 750
BMediaEventLooper: SchedulingLatency is 3000
VideoProducer::SetRunMode(3)
VideoConsumer::CreateBuffers -using hardware overlay
VideoConsumer::CreateBuffers ERROR creating bitmap 0
VideoConsumer::CreateBuffers -using hardware overlay
VideoConsumer::CreateBuffers ERROR creating bitmap 1
VideoConsumer::CreateBuffers -using hardware overlay
VideoConsumer::CreateBuffers ERROR creating bitmap 2
VideoConsumer::CreateBuffers -using hardware overlay
VideoConsumer::CreateBuffers ERROR creating bitmap 3
VideoConsumer::CreateBuffers ERROR IN GET BUFFER LIST
VideoConsumer::Connected - COULDN'T CREATE BUFFERS


On 6/26/10, David McPaul <dlmcpaul@xxxxxxxxx> wrote:
> On 26 June 2010 13:40, sami vuokila <varjosanomat@xxxxxxxxx> wrote:
>> I've played around with video_mixer.. a few questions
>>
>> when I connect the mixer to mediaplayer output, the debug shows that it
>> triggers MediaTrackVideoSupplier:: _SwitchFormat() making codec change
>> colorspace (wreaking all kinds of havoc and stopping playback).
>
> Negotiation on colourspace is supposed to occur.
>
>> do you think is it feasible to make video_mixer to accept whatever color
>> space it is offered off the bat so I wouldnt need to worry about the codec
>> thats pushing out the frames?
>
> That is the intention.  The mixer is supposed to do colour space
> conversion on th input nodes to suit the output node.
> Then mix all inputs to a single output.
>
> Obviously the color conversion is not there yet.
>
>> maybe the preferred way would be to modify the codec to push out B_RGB32
>> (internal format of the video_mixer) to avoid multiple colorspace
>> conversions. but for testing i wouldnt mind doing it on the video_mixer
>> side I guess.
>
> If you modify the Video Consumer node to only accept B_RGB32 then that
> should force the codec to fall back to B_RGB32.
>
>> another question, yep there's more, how can i get debug output from
>> video_mixer.media_addon? cant start it from the terminal.
>
> Run Cortex from the terminal, the addon is loaded into it's process
> space and outputs to it's stdout.
>
> --
> Cheers
> David
>
>

Other related posts: