Re: [sdljava-users] SDLVideoTest fails on FC4
Status: Beta
Brought to you by:
ivan_ganza
From: Shane M. W. <swa...@co...> - 2006-03-06 03:18:49
|
Ivan, That is great news. I look forward to testing out the performance in Java. Thanks! Shane Ivan Z. Ganza wrote: > Hi Shane, > > Had a glance at the code. From what I see it should be no problem to > get the YUV stuff implemented. I'll try to get it soon. Most likely > I will work on it next weekend... > > Cheers, > -Ivan/ > > Ivan Z. Ganza wrote: > >> Great thanks, >> >> I will have a look at this and get back to you. >> >> Much appreciated, >> -Ivan/ >> >> Shane M. Walton wrote: >> >>> Ivan, >>> >>> Here you go. Just press the "q" key to quit the example. >>> >>> Shane >>> >>> Ivan Z. Ganza wrote: >>> >>>> Greeting Shane, >>>> >>>> Any example code you can provide in C++ would be helpful. Or if >>>> you could give me a C program I can compile and run against sdl >>>> that tests the YUV I could then implement enough so those calls can >>>> be made on the sdljava side. Once I can see how the code needs to >>>> be utilized I can have some idea if it can be done easily... >>>> >>>> Thanks, >>>> -Ivan/ >>>> >>>> Shane M. Walton wrote: >>>> >>>>> Thanks Ivan. >>>>> >>>>> The SDL_Overlay is very powerful when one would like to render video. >>>>> >>>>> Typically MPEG codecs encode/decode pixels into a YUV color space >>>>> which is more efficient to operate on than RGB. So DVD/MPEG2 >>>>> rendering applications usually take advantage of the YUV overlay >>>>> acceleration capabilities of a video card. This is known as Xv in >>>>> the Linux world. All in all, what you get is the video on the >>>>> screen with little or no CPU overhead. The overlay architecture >>>>> also typically have scaling capabilities, which look much softer >>>>> than any software routine. >>>>> >>>>> I think it would be very worthwhile to have SDL_Overlay(s) >>>>> implemented in sdljava, as Java in general really seems to be >>>>> missing efficient video rendering capabilities. >>>>> >>>>> I can provide you with C/C++ source code examples if you are >>>>> interested in adding the SDL_Overlay functionality. It really >>>>> isn't too difficult. I would offer to add it, but I don't have a >>>>> clue as to how SWIG works, but always willing to learn. >>>>> >>>>> Shane >>>>> >>>>> Ivan Z. Ganza wrote: >>>>> >>>>>> Greetings Shane, >>>>>> >>>>>> Sorry that your having trouble. I just tried it myself and I >>>>>> don't see the image either. Just a blank window. Not sure when >>>>>> this stopped working. Should hit myself for not regression >>>>>> testing. I will try to figure out the problem. >>>>>> >>>>>> Don't want to add more bad news but I never implemented the YUV >>>>>> Overlay stuff. Don't really know much about that aspect. Is it >>>>>> just a few method calls or much more involved? I think I remember >>>>>> it wasn't easy to map (via swig) initially so that is why I >>>>>> skipped it. >>>>>> >>>>>> testimage seems to be working fine though. hmm. >>>>>> >>>>>> -Ivan/ >>>>>> >>>>>> Shane M. Walton wrote: >>>>>> >>>>>>> The current binary download for Linux i386 doesn’t give me the >>>>>>> NullPointerException, but it doesn’t show the test_bmp.bmp aka >>>>>>> power plant. >>>>>>> >>>>>>> My ultimate goal is to create a Java video application that can >>>>>>> render video using the YUV Overlay. Maybe it would just work, >>>>>>> but I don’t feel all warm and fuzzy if the test application >>>>>>> doesn’t. Has anybody else had this issue? >>>>>>> >>>>>>> Shane >>>>>>> >>>>>>> ------------------------------------------------------------------------ >>>>>>> >>>>>>> >>>>>>> *From:* sdl...@li... >>>>>>> [mailto:sdl...@li...] *On Behalf Of >>>>>>> *Shane M. Walton >>>>>>> *Sent:* Friday, March 03, 2006 7:35 AM >>>>>>> *To:* sdl...@li... >>>>>>> *Subject:* [sdljava-users] SDLVideoTest fails on FC4 >>>>>>> >>>>>>> OS: Fedora Core 4 (i686) >>>>>>> >>>>>>> SDL: 1.2.8-3.2 >>>>>>> >>>>>>> JDK: Sun 1.5.0_06 >>>>>>> >>>>>>> SWIG: 1.3.24-2 >>>>>>> >>>>>>> The following happens with both stable release and cvs trunk >>>>>>> checkout: >>>>>>> >>>>>>> java -Djava.library.path=./lib -cp ./classes/ >>>>>>> sdljava.video.SDLVideoTest >>>>>>> >>>>>>> Video subsystem initialized >>>>>>> >>>>>>> java.lang.NullPointerException >>>>>>> >>>>>>> at sdljava.video.SDLPixelFormat.getPalette(SDLPixelFormat.java:61) >>>>>>> >>>>>>> at sdljava.video.SDLPixelFormat.toString(SDLPixelFormat.java:375) >>>>>>> >>>>>>> at sdljava.video.SDLSurface.toString(SDLSurface.java:1122) >>>>>>> >>>>>>> at java.lang.String.valueOf(String.java:2577) >>>>>>> >>>>>>> at java.lang.StringBuffer.append(StringBuffer.java:220) >>>>>>> >>>>>>> at sdljava.video.SDLVideoTest.init(SDLVideoTest.java:21) >>>>>>> >>>>>>> at sdljava.video.SDLVideoTest.main(SDLVideoTest.java:70) >>>>>>> >>>>>>> Seems like all accessors in SDLPixelFormat throw a >>>>>>> NullPointerException. >>>>>>> >>>>>>> Thanks. >>>>>>> >>>>>>> Shane >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> ------------------------------------------------------- >>>>>> This SF.Net email is sponsored by xPML, a groundbreaking >>>>>> scripting language >>>>>> that extends applications into web and mobile media. Attend the >>>>>> live webcast >>>>>> and join the prime developer group breaking into this new coding >>>>>> territory! >>>>>> http://sel.as-us.falkag.net/sel?cmd=k&kid0944&bid$1720&dat1642 >>>>>> _______________________________________________ >>>>>> sdljava-users mailing list >>>>>> sdl...@li... >>>>>> https://lists.sourceforge.net/lists/listinfo/sdljava-users >>>>>> >>>>> >>>>> >>>>> >>>>> ------------------------------------------------------- >>>>> This SF.Net email is sponsored by xPML, a groundbreaking scripting >>>>> language >>>>> that extends applications into web and mobile media. Attend the >>>>> live webcast >>>>> and join the prime developer group breaking into this new coding >>>>> territory! >>>>> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 >>>>> >>>>> _______________________________________________ >>>>> sdljava-users mailing list >>>>> sdl...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/sdljava-users >>>> >>>> >>>> >>>> >>>> >>>> >>>> ------------------------------------------------------- >>>> This SF.Net email is sponsored by xPML, a groundbreaking scripting >>>> language >>>> that extends applications into web and mobile media. Attend the >>>> live webcast >>>> and join the prime developer group breaking into this new coding >>>> territory! >>>> http://sel.as-us.falkag.net/sel?cmd=k&kid0944&bid$1720&dat1642 >>>> _______________________________________________ >>>> sdljava-users mailing list >>>> sdl...@li... >>>> https://lists.sourceforge.net/lists/listinfo/sdljava-users >>>> >>> >>> ------------------------------------------------------------------------ >>> >>> >>> /* >>> * Libavformat API example: Output a media file in any supported >>> * libavformat format. The default codecs are used. >>> * >>> * Copyright (c) 2003 Fabrice Bellard >>> * >>> * Permission is hereby granted, free of charge, to any person >>> obtaining a copy >>> * of this software and associated documentation files (the >>> "Software"), to deal >>> * in the Software without restriction, including without limitation >>> the rights >>> * to use, copy, modify, merge, publish, distribute, sublicense, >>> and/or sell >>> * copies of the Software, and to permit persons to whom the Software is >>> * furnished to do so, subject to the following conditions: >>> * >>> * The above copyright notice and this permission notice shall be >>> included in >>> * all copies or substantial portions of the Software. >>> * >>> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, >>> EXPRESS OR >>> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF >>> MERCHANTABILITY, >>> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT >>> SHALL >>> * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES >>> OR OTHER >>> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, >>> ARISING FROM, >>> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER >>> DEALINGS IN >>> * THE SOFTWARE. >>> */ >>> >>> /* >>> * The above is included per the fill_yuv_image() function I borrowed >>> from the >>> * FFmpeg output_example.c. It is a cool little YUV generator... >>> * >>> */ >>> >>> #include <stdio.h> // for fprintf >>> #include <unistd.h> // for usleep >>> >>> #include <SDL/SDL.h> >>> >>> typedef struct { >>> unsigned char *data[4] ; >>> int linesize[4] ; >>> } myImage ; >>> >>> void fill_yuv_image(myImage *pict, int frame_index, int width, int >>> height) >>> { >>> int x, y, i; >>> >>> i = frame_index; >>> >>> /* Y */ >>> for(y=0;y<height;y++) { >>> for(x=0;x<width;x++) { >>> pict->data[0][y * pict->linesize[0] + x] = x + y + i * 3; >>> } >>> } >>> >>> /* Cb and Cr or U and V */ >>> for(y=0;y<height/2;y++) { >>> for(x=0;x<width/2;x++) { >>> pict->data[1][y * pict->linesize[1] + x] = 128 + y + i * 2; >>> pict->data[2][y * pict->linesize[2] + x] = 64 + x + i * 5; >>> } >>> } >>> } >>> >>> int main ( int argc, char *argv[] ) >>> { >>> int flags, cnt = 0, looping = 1, w = 640, h = 480 ; >>> SDL_Surface *surface ; >>> SDL_Overlay *overlay ; >>> SDL_Rect area ; >>> SDL_Event event ; >>> myImage image ; >>> >>> SDL_Init ( SDL_INIT_VIDEO ) ; >>> >>> flags = SDL_HWSURFACE | SDL_ASYNCBLIT | SDL_HWACCEL ; >>> if ( ( surface = SDL_SetVideoMode ( w, h, 0, flags ) ) == NULL ) >>> { >>> fprintf ( stderr, "SDL_SetVideoMode: %s\n", SDL_GetError() ) ; >>> return -1 ; >>> } >>> >>> /* >>> * request a YVU420P overlay - Y + V + U >>> */ >>> overlay = SDL_CreateYUVOverlay ( w, h, SDL_YV12_OVERLAY, surface ) ; >>> if ( overlay == NULL ) >>> { >>> fprintf ( stderr, "SDL_CreateYUVOverlay: %s\n", SDL_GetError() ) ; >>> goto cleanup ; >>> } >>> >>> area.x = 0 ; >>> area.y = 0 ; >>> area.w = w ; >>> area.h = h ; >>> >>> while ( looping ) >>> { >>> /* >>> * lock the YUV overlay surface before messing with the pixels >>> */ >>> SDL_LockYUVOverlay ( overlay ) ; >>> >>> /* >>> * swap the U and V planes since... >>> * the overlay is YVU420P and the image YUV420P >>> */ >>> image.data[0] = overlay->pixels[0] ; >>> image.data[1] = overlay->pixels[2] ; >>> image.data[2] = overlay->pixels[1] ; >>> image.linesize[0] = overlay->pitches[0] ; >>> image.linesize[1] = overlay->pitches[2] ; >>> image.linesize[2] = overlay->pitches[1] ; >>> >>> /* >>> * copy in a YUV image >>> */ >>> fill_yuv_image ( &image, cnt++, w, h ) ; >>> >>> /* >>> * unlock the YUV overlay surface after messing with the pixels >>> */ >>> SDL_UnlockYUVOverlay ( overlay ) ; >>> >>> /* >>> * finally, display the YUV image >>> */ >>> SDL_DisplayYUVOverlay ( overlay, &area ) ; >>> >>> /* >>> * check to see if the "q" key was pressed to quit >>> */ >>> if ( SDL_PollEvent ( &event ) ) >>> { >>> if ( event.type == SDL_KEYDOWN ) >>> { >>> switch ( event.key.keysym.sym ) >>> { >>> case SDLK_q: >>> looping = 0 ; >>> break ; >>> } >>> } >>> } >>> >>> /* >>> * sleep for a bit to avoid over-driving the CPU >>> */ >>> usleep ( 20000 ) ; >>> } >>> >>> SDL_FreeYUVOverlay ( overlay ) ; >>> >>> cleanup: >>> >>> SDL_Quit ( ) ; >>> >>> return 0 ; >>> } >>> >>> >> >> >> >> ------------------------------------------------------- >> This SF.Net email is sponsored by xPML, a groundbreaking scripting >> language >> that extends applications into web and mobile media. Attend the live >> webcast >> and join the prime developer group breaking into this new coding >> territory! >> http://sel.as-us.falkag.net/sel?cmd=lnk&kid0944&bid$1720&dat1642 >> _______________________________________________ >> sdljava-users mailing list >> sdl...@li... >> https://lists.sourceforge.net/lists/listinfo/sdljava-users > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by xPML, a groundbreaking scripting > language > that extends applications into web and mobile media. Attend the live > webcast > and join the prime developer group breaking into this new coding > territory! > http://sel.as-us.falkag.net/sel?cmd=k&kid0944&bid$1720&dat1642 > _______________________________________________ > sdljava-users mailing list > sdl...@li... > https://lists.sourceforge.net/lists/listinfo/sdljava-users > |