Directshow to play H.264 video - Windows Mobile Development and Hacking General

Hi,
I wrote a small application to play a H.264 video with DirectShow. Program works but the problem is frame rate is very low. But when I play the same MP4 file with Windows media player frame rate is fine. Below is the code what I am doing. I don't understand why frame rate from my program is so less? What can I do to make it better? BTW I am using HTC Touch Pro.
CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (LPVOID *)&pGraphBuilder);
pGraphBuilder->QueryInterface(IID_IMediaControl, (LPVOID *)&pMediaControl);
pGraphBuilder->RenderFile(filePath,NULL);
pGraphBuilder->QueryInterface(IID_IVideoWindow, (LPVOID *)&pVideoWin);
pVideoWin->put_FullScreenMode(OATRUE);
pMediaControl->Run();
Thanks

Related

Video performance . Any ideas?

Hi,
TCPMP and WM used to play video at a resonable frame rate. Now I noticed that both players crawl whem playing video stored in Storage Card.
I watched Tiki Bar TV or Cranky Geeks without a problem.
The only change I made recently was "installing" A2DP.
Could this be the problem?
Video streaming continues to work OK though.
How is your video frame rate for MPEG4 lately?

BEST video encoder for X1 ~Support HW Decode~

I tried many H264 ACC encoder, such as jetaudio and Format Factory. But all of it didn't have a native resolution and basic profile setting for X1
If you have a high demand on video playback.
You could try the GOM encoder. it support the RMVB to H264 + ACC, and it can limit the basicline profile 1.3 and native resolution for X1 WVGA (800x480).
I encoded many video by GOM encoder, the quality is very COOL ~~~~ I am highly recommend of it
http://www.gomlab.com/eng/GMP_download.html
On beside, the GOM player still is beta version and the internet connection is require while running the encoder.
***The beta encoder it will encode a GOM encoder logo on the top right hand corner around 10sec ***
*** Please make sure tick the "limit basicline [email protected]" checkbox and force the output file resolution to 800x450 (16:9), otherwise the video playback on X1 will very unstable***
Dude use MEGUI. It's can encode just about anything and in any resolution. Been using it to convert my blurays to smaller files to stay on my computer for streaming.
you can try SUPER as well...
nap007 said:
you can try SUPER as well...
Click to expand...
Click to collapse
I got a error message while running Super on my Windows Vista, didn't know why so many video encoder have problem on Vista
http://www.effectmatrix.com/total-video-converter/index.htm
Total Video Converter 3.14
very easy mp4 h264
this encoder is excellent highly recommended it makes ur 800x400 screen to a mini hd-tv
simdao said:
I tried many H264 ACC encoder, such as jetaudio and Format Factory. But all of it didn't have a native resolution and basic profile setting for X1
If you have a high demand on video playback.
You could try the GOM encoder. it support the RMVB to H264 + ACC, and it can limit the basicline profile 1.3 and native resolution for X1 WVGA (800x480).
I encoded many video by GOM encoder, the quality is very COOL ~~~~ I am highly recommend of it
http://www.gomlab.com/eng/GMP_download.html
On beside, the GOM player still is beta version and the internet connection is require while running the encoder.
***The beta encoder it will encode a GOM encoder logo on the top right hand corner around 10sec ***
*** Please make sure tick the "limit basicline [email protected]" checkbox and force the output file resolution to 800x450 (16:9), otherwise the video playback on X1 will very unstable***
Click to expand...
Click to collapse
How did you manage to get yourself a full version of GOM encoder because I can't find a way to buy the software.
What is the video bitrate you guys are using? Also anyone converting to xvid instead of mp4? What is the best setting for xvid?
SPB DVD????
--------------------------------------------------------------------------------
s.u.p.e.r is a very good programm.
but nvidia kaboom and tcmpg 4.0 xpress can transcode on geforce hardware (8xxx+9xxx+02x0).
on my gtx280 i can transcode with 250 fps (kaboom). really nice!
anyone care to write a tutor for the best encoding video for the x1? I've tried so many different programs and the video playback is sluggish. I use core video player btw
romeo0119 said:
anyone care to write a tutor for the best encoding video for the x1? I've tried so many different programs and the video playback is sluggish. I use core video player btw
Click to expand...
Click to collapse
CorePlayer doesn't take advantage of the hardware acceleration atm so it won't play H.264 videos that well. The best I can get CorePlayer to play is about 1000kbps divx with any resolution. Obviously the video looks worse as you raise the resolution but keep the 1000kbps data rate.
I mainly use the video player in the SE multimedia panel, which does use the hardware acceleration and can play H.264 videos at 800x440 at 1000kbps very well and looks better than the equivalent divx.
As for programs... for encoding divx to avi for Coreplayer, I just use virtualdub. For encoding H.264 you can use a number of apps, but a free one that's ok and was mentioned on these forums is http://www.videora.com/en-us/Converter/iPod/
Basically just create a new profile for the X1 using 800x440 or whatever resolution you want, and set it to about 1024 kbps using H.264.
dinan said:
CorePlayer doesn't take advantage of the hardware acceleration atm so it won't play H.264 videos that well. The best I can get CorePlayer to play is about 1000kbps divx with any resolution. Obviously the video looks worse as you raise the resolution but keep the 1000kbps data rate.
I mainly use the video player in the SE multimedia panel, which does use the hardware acceleration and can play H.264 videos at 800x440 at 1000kbps very well and looks better than the equivalent divx.
As for programs... for encoding divx to avi for Coreplayer, I just use virtualdub. For encoding H.264 you can use a number of apps, but a free one that's ok and was mentioned on these forums is http://www.videora.com/en-us/Converter/iPod/
Basically just create a new profile for the X1 using 800x440 or whatever resolution you want, and set it to about 1024 kbps using H.264.
Click to expand...
Click to collapse
Thanks I will try what u suggested. I'm using cucusoft dvd converter btw
Edit: I tried with cucusoft converter, this is my profile. Video bitrate 725 kbits/s, H.264/AVC codec. Resolution 800x450. Audio codec acc 96kbits/s. I played with the default SE player, video kinda choppy and sluggish. I dont know what I'm doing wrong
Any updates on this?
i have made a full script for auto converting a full directory of videos:
http://forum.xda-developers.com/showthread.php?t=453684
if someone interested...
Some news on the GOM Encoder
With the newest version, there is a option update on "limit basicline [email protected]" . Now you can set it to 1.3 or 3.0.
I've tried 3.0 and it is working fine.
I don't know what's the effect for changing to 3.0. I just assume new stuff and bigger number are better.
Honestly, has anyone figured out what the best settings for Video/Audio encoding are for SE player? Does it have hardware acceleration?
I havent, video still laggy as hell, i use both windows media player and SE media player panel.
Just tried Videora free converter yesterday and today, and works great at 320x240 MPEG (did first one at two passes but you get a 1gb file instead of 500Mb and it really looks the same on the phone screen). And really not laggy at all....I'm not going to say you don't get an occasional jaggy but not very many. Biggest problem is the 1hr+ encoding time per movie
total video converter is best
works grt on xperia
and very fast too
other thn other programms

Unable to watch movies fluently

hi guys,
I'm glad having a Xperia since last week....but I'm unable to run videos fluently - even with TCPMP 0.72RC1.
There was a "James Bond" trailer von the device when I have bought it, but it runs with 1 frame per 5-10 seconds!
even other movies don't play fluently.
Yesterday I did a hard-reset....but this didn't help.
Does anyone have the same problems?? Or a solution for this probs?
I even tryed out the "Turbo Speed X1 - Up to 8 X faster Performance than standard setup"...but even this didn't help...
//edit: there's no branding on the device...ROM: 1.02.932.3 from 08/29/2008
hi Cysign,
first i have to say sorry... i cannot help you with your specific problem.
but i have got a related problem. the bond trailer runs ok with my x1i... so i tried to rip a dvd for the x1 by myself using the following conversion-settings:
video: 480x270, h264, mp4, 25fps (pal) @ 796kbps
audio: aac @ 128kbps
this resulted in a 706mb file.
i copied the file via active sync to the 8gb flash card in the phone. all went well so far but when i watch the movie it looks somewhat "artificial". meaning that this movie looks like it was made by using a home-videocamera. (i hope this discribes it a little)
the bond trailer doesnt have this videoish appearance.
what went wrong ? are my settings exceeding the capabilities of the x1? or do you have other suggestions ? (btw, i tried to use the same settings as the bond trailer)
greetz
Did you guys trying increasing the buffering size in ur players? I personally use core player 2.0 and it plays perfectly but sometimes and this is rare but its like the graphics gpu is failing or something. All the images appear on the screen very slowly but a hard reset usually fixes that.
Guys, when I try to play the Bond movie, it prompt for license cert etc but it is still not able to play. How to resolve this problem?
chongbh said:
Guys, when I try to play the Bond movie, it prompt for license cert etc but it is still not able to play. How to resolve this problem?
Click to expand...
Click to collapse
which player?
that bond trailer ran pretty good on my x1a. i cant remember if i watched the whole thing or just to see how it ran but from what i did see, it was good. no lag or freeze up. i played it on the standard media player that came on the phone. i didnt play it thru the panel tho, i just played it by opening up media player. how were you running it? my x1a is pretty much all stock with no hacks on it.
i also had some movies that i ripped in .3gp format and from what i can tell, it also ran pretty good. i ripped these movies for my other phone (lg cu500) and my nokia internet tablet and so it also runs pretty good on the x1a.
i like ripping in .3gp because i can play it on any of my devices and the files are about 100mb per two hour movie. i think my resolution that i ripped my dvd was something like 480 x 240 but im not for certain. its kind of funny that not all devices will run mpeg because of the different variations of mpeg. kind of dissapointing when a product says it will a certain format but when you try and run it, it just so happen it doesnt support that perticular format.
Try Media Xperiance Panel, it is by far better than Core/TCPMP/WMP.
I think the media panel is the only app that support Hardware Accelerate in X1 at the moment.
but it doesn't play most formats and even some of my mp4s sadly
Similar problem here.
The only vid that plays well is the bond trailer.
All others (wmv) are played but with a horrible fps rate
Tried to start media player directly from the today screen and via panel... no difference.
Looks like a fast slideshow.
kanthai said:
Try Media Xperiance Panel, it is by far better than Core/TCPMP/WMP.
I think the media panel is the only app that support Hardware Accelerate in X1 at the moment.
Click to expand...
Click to collapse
i tried both, playing via wmp and the media panel but the appearance of my ripped movie stays the same....
there is no stuttering but (as i said in my first post) it looks like it has something to do with the framerate. ?
btw, here is a readout from the program "super 2008 build 33" of the bond trailer:
Video
-----
Codec : AVC
Codec/Family : AVC
Codec/Info : Advanced Video Codec
Codec profile : [email protected]
Codec settings, CABAC : No
Codec_Settings_RefFrames : 2
PlayTime : 1mn 58s
Bit rate mode : VBR
Bit rate : 892 Kbps
Width : 480 pixels
Height : 260 pixels
Display Aspect ratio : 16/9
Frame rate mode : CFR
Frame rate : 24.000 fps
Standard : NTSC
Chroma : 4:2:0
Interlacement : Progressive
Bits/(Pixel*Frame) : 0.298
StreamSize/String : 12.6 MiB
Language : English
Audio
-----
Codec : AAC LC
Codec/Family : AAC
Codec/Info : AAC Low Complexity
PlayTime : 1mn 58s
Bit rate mode : CBR
Bit rate : 128 Kbps
Channel(s) : 2 channels
Channel positions : L R
Sampling rate : 44.1 KHz
Resolution : 16 bits
StreamSize/String : 1.81 MiB
Language : English
I tried a My name is Earl episode a few days ago. It's in 1280x720 resolution so I thought it would be a good starting point for a test.
I managed to play it ok i media player at 800x448 or around there, but only with 600 kbps bitrate. It looked ok and played fairly smooth. I would say around 20 fps.
For recoding I used the Xvid4PSP program with modified default MP4 profile.
You need to use x264 (AVC) profile 4.2 and AAC LC (Low complexity). Then it should play with hardware acceleration.
800x480 resolution may be overkill, since the pixels are so tiny, so I would recommend a much lower resolution (600x'something') and around 600 kbps bitrate for a nice result.
I just run the 350mb (ish) avi files direct in Coreplayer.
Res is around 640x352.
TV shows are fine, and IronMan only had a few drops in the high action scenes.
Here's what I do with my videos:
Open PocketDivXEncoder on my pc.
Select HD-TV as the option.
Select the movies I want to endcode.
Drop video quality to 70.
Audio qaulity to maximum.
Resize video (keeping aspect ratio) to 400 horizontal.
Encode.
These all play in Coreplayer smooth as silk
I personally do absolutely nothing. I download a movie and just place it on my sd card and watch it through core player. It plays smooth with no compression at all.
try using spb mobile dvd to convert your movies, i've done this with some movies that didn't play smoothly and now they all work perfectly
Im currently using TCMP im just wondering if anyone has any ideas for the optimal settings for it
Cheers
Bxsteez said:
Did you guys trying increasing the buffering size in ur players? I personally use core player 2.0 and it plays perfectly but sometimes and this is rare but its like the graphics gpu is failing or something. All the images appear on the screen very slowly but a hard reset usually fixes that.
Click to expand...
Click to collapse
what is a recommended buffer rate for watching videos?
Can someone confirm that the only player that utilises the media accelerator is the media panel?
I had thought that WMP also uses the accelerator.
Also what are the codecs the accelerator uses?
I've tried various MP4's and i've found only by lowering the resolution do I get smooth playback.
I'm currently going through the baselines for H.264 and found that baseline 3 does not play and baseline 1.3 does not get accelerated.
I'm currently (as I type) encoding a file with the baseline of 1 to see if that is accelerated.
I think we need to narrow down the exact codecs/media players/resolutions to use.
THJahar said:
I'm currently going through the baselines for H.264 and found that baseline 3 does not play and baseline 1.3 does not get accelerated. I'm currently (as I type) encoding a file with the baseline of 1 to see if that is accelerated. I think we need to narrow down the exact codecs/media players/resolutions to use.
Click to expand...
Click to collapse
the bond trailer is [email protected]
i'm currently using "super2008.33" and the readout of my re-encoded movies show [email protected]
how can we "upgrade" this baseline thing to e.g. L2.1 ???
--> did a quick search on the net....but no info about that...
nucleic acid said:
the bond trailer is [email protected]
i'm currently using "super2008.33" and the readout of my re-encoded movies show [email protected]
how can we "upgrade" this baseline thing to e.g. L2.1 ???
--> did a quick search on the net....but no info about that...
Click to expand...
Click to collapse
In super if you look in the video panel you can see the H264 Profile in the options section.
Click on the "H" button and the profiles pops open and select your baseline from there.
I've tried Baseline 1 now and still i'm not getting acceleration...the file still plays faster on Coreplayer than it does in the panel.
I'm wondering if this is because I have Jack's custom Rom using pubbas panel installer for the Media experience?
Also nobody answered me about whether or not WMP uses acceleration?

mediaplayer video playback is not smooth

i have noticed specially in the latest 6.5 release that windows mediaplayer plays video frame at a rate of 1 second. then i further noticed that video refresh rate is proportional to any other moving object on the screen. specially the refresh rate becomes very high when activesync notification is animating in the title bar.
how can i get rid of such dependency?
Not really sure what you are talking about, but windows media player isn't the best choice for playing media on your phone.
I recommended trying Coreplayer 1.3.2 is has limited Qtv suppport but alone allows smooth and enjoyable playback.
Hope this helps
who uses wmp lol...
use tcpmp just ignore coreplayer(especially if you need subs).

Why wont this play back?

From VLC:
H264 - MPEG-4 AVC (part 10) (avc1)
English
1280x720
Frame rate 23.976215
In an MKV.
The audio plays, it has a picture from the frame of the video, but it just wont play the video stream... How can I get it to say why? Or have I got some special codec that won't play, I thought the SGS could play a 720P H264.

Categories

Resources