Can we run this with out needing ARDdrone?

On Wed, Jul 24, 2013 at 8:22 AM, <tmur...@wumpus-cave.net> wrote:

> Short on time at the moment, but I have the complete code on a github repo:
>
> https://github.com/frezik/UAV-**Pilot<https://github.com/frezik/UAV-Pilot>
>
> The relevant code is in UAV::Pilot::SDL::Video, and the decoding happens
> in the xs file for UAV::Pilot::Video::**H264Decoder.  The test
> t/160_video_decode.t should run the decoding end of things. There's a test
> video in t_data/ardrone_video_stream_**dump.bin, though that contains the
> PaVE headers from the UAV before each frame.  Those headers can be stripped
> out by bin/uav_video_dump.
>
> I'll try to come up with a more concise example later this evening.
>
> Thanks,
> Timm
>
>
> On 24.07.2013 01:00, Tobias Leich wrote:
>
>> 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<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
>>>
>>
>

Reply via email to