Hi, can you paste a complete example please? Maybe with a link to a test video file.
What I would try first is SDL's latest release, which is 2.540 or so. Cheers, FROGGS Am 23.07.2013 23:44, schrieb tmur...@wumpus-cave.net: > I'm working on a project involving decoding h.264 video frames with > ffmpeg and then outputting them to an SDL surface. From what I've > read, the YUV overlay is meant for this kind of job, but I'm having > trouble getting it to work with the Perl bindings. > > One thing that seems odd to me in the Perl docs is: > > As of release 2.3 direct right to overlay is disable. > > Besides the typos, this troubles me because it seems that disabling > the feature makes the YUV overlay completely useless. > > Not to be deterred, I wrote this code: > > SDL::Video::lock_YUV_overlay( $overlay ); > # The order of array indexen is correct, according to: > # http://dranger.com/ffmpeg/tutorial02.html > my $pitches = $overlay->pitches; > $$pitches[0] = scalar @{ $last_vid_frame[0] }; > $$pitches[2] = scalar @{ $last_vid_frame[1] }; > $$pitches[1] = scalar @{ $last_vid_frame[2] }; > my $pixels = $overlay->pixels; > $$pixels[0] = $last_vid_frame[0]; > $$pixels[2] = $last_vid_frame[1]; > $$pixels[1] = $last_vid_frame[2]; > SDL::Video::unlock_YUV_overlay( $overlay ); > > SDL::Video::update_rects( $sdl, $bg_rect ); > SDL::Video::display_YUV_overlay( $sdl, $bg_rect ); > > When I run this, I get an error about not being able to find the > pitches() method against the class "SDL::Overlay". Eh? (Same thing > happens for the pixels() method if I put that call first.) I can call > width() and format() and such just fine on that object. > > If needed, I can handle the overlay entirely at the C level. I may > end up doing that anyway; the C array that comes out of ffmpeg is > being transformed into a Perl array-of-arrays, which is going to be an > expensive operation to do for 720p at 30 fps in realtime. But I'd like > to try this at the Perl level for now. > > I might also have to convert the output from ffmpeg using > sws_scale(). It's coming out in YUV420P mode, and I'm using YV12 to > init the overlay. But I'd like to get the above working before messing > with that. > > Thanks, > Timm Murray