View Full Version : ReClock DirectShow filter : try it !
Pages :
1
2
3
4
5
6
7
[
8]
9
10
11
12
13
14
ogo
13th February 2003, 10:18
@Grimmi Meloni:
Yes reclock have some problems in SPDIF mode with some sound cards (terratec, c-media). I have no clue what the problem is. Seems like there is something to do to properly "activate" SPDIF, but i found no documentation about this. You can try to use directsound for SPDIF (see config app) instead of waveout, maybe you will have better luck
@downloada:
Yes morgan stream switcher does not load with reclock. I may be wrong but i think it was designed to work only with the standard renderers. You can use MPC with it's builtin audio switcher, but you will need version 6.4.2.2 or later which is not yet publicly available (gabest ?). However in next version of reclock i've included a "mute sound" button as a "cheap" stream switcher ...
@gabest:
Yes i saw this too when playing DVD. It's related to events scheduled by the reference clock if i remember well. I've not yet looked into this :)
Anyway next version of reclock should be available tonight or tomorrow :)
gabest
13th February 2003, 16:09
Originally posted by ogo
You can use MPC with it's builtin audio switcher, but you will need version 6.4.2.2 or later which is not yet publicly available (gabest ?).Well, it is, one just have to visit its topic for the links :P
BigT
13th February 2003, 20:30
However in next version of reclock i've included a "mute sound" button as a "cheap" stream switcher ...
Well, there could be a very small problem for those who use larger fonts on their HTPC (TV screen). Simply put: all groupboxes do not fit on your form in my case. :P
By the way, previous versions of Reclock played BivX just fine (audio still switchable). When i re-read previous posts it looks as if people think that this is an old issue. In case i am wrong just don't consider what i said ;)
Chibi Jasmin
14th February 2003, 12:13
Well, I don't know, how this could be done, but I'd like to see this work without any extra mute button...
I never installed anything like Morgan Stream Switcher, I was just used to using players like ZoomPlayer and BSPlayer that can just switch Audio Streams. This worked all the time with DefaultDirectSound Device...would be nice to see it work the same way with ReClock...don't know, if this is ReClock's or the player's problem to solve...
downloada
14th February 2003, 16:56
hi,
thanx ogo! i'll try the new version as soon as it's out...
to your suggestion with mpc: i could surely use it on my workstation-machine, but on my htpc i wouldn't wanna miss the functions of zoomplayer for tv-out (like the anamorphic aspect ratio, it looks just like dvd when i use it, i've got a 16:9-tv), also, my remote control is configured for zp, so i don't really wanna change that.
a little ot: why hasn't anyone written a different kind of stream switcher? i mean: why should you want to implement the switcher after decoding the audio? i think it's more logical to put it BEFORE decoding the audio, especially on slower machines it would be more ressource-friendly.or is there something that would prevent such a kind of switcher?
if i had more programming experience, especially related to directshow, i would really want to code such a little piece of software...
cu
gabest
14th February 2003, 17:13
Originally posted by downloada
a little ot: why hasn't anyone written a different kind of stream switcher? i mean: why should you want to implement the switcher after decoding the audio? i think it's more logical to put it BEFORE decoding the audio, especially on slower machines it would be more ressource-friendly.or is there something that would prevent such a kind of switcher?This is easy to answer, different streams might need different decoders downstream. This is why ogm's splitter (switching inside the filter) is not very good if you want to put differently encoded audio streams in one file.
ogo
14th February 2003, 18:41
@downloada:
Yes i like the aspect ratio controls in Zoomplayer. That's the only reason i still use ZP on my 16:9 TV instead of MPC, hence my little feature request for Gabest because i prefer MPC :) Could you add a "free" aspect ratio mode in MPC ? I need it because my TV out is 720x576 and i put my 16:9 in "full screen" mode to use all the pixels, but it means display somethin in 4:3 on 16:9, so i would need the reverse aspect ratio in MPC (something that multiply the height by 1,33 when source aspect ratio is used)...
Anyway, version 0.99g of ReClock is out on my website ! When i'll reach 0.99z i'll be constrained to go to 1.0 :D Some changes, bugfixes, etc ... Not tested a lot (had little time this week). If someone knows how to make SPDIF work on c-media and terratec xfire cards with wave APIs, please contact me because i'm nearly giving up on this problem.
Happy St Valentine :)
gabest
14th February 2003, 18:51
Originally posted by ogo
[BCould you add a "free" aspect ratio mode in MPC ? I need it because my TV out is 720x576 and i put my 16:9 in "full screen" mode to use all the pixels, but it means display somethin in 4:3 on 16:9, so i would need the reverse aspect ratio in MPC (something that multiply the height by 1,33 when source aspect ratio is used)...[/B]/me is too dumb to understand this now :rolleyes: Sorry, I don't have a 16:9 tv and can't imagine what you mean. But in v6426 you can define your own pannscan presets now.
ogo
14th February 2003, 19:00
Re-reading my post, yes i confirm you i was not clear :) My bad english ...
((( atom )))
14th February 2003, 23:06
PROPS 2 OGO!
- i can use reclock now!
(thx to the mute-button..)
Safai
15th February 2003, 02:15
@gabest: since we're talking about aspect ratio here... when using the overlay mixer, the aspect ratio is always fixed to the original... i believe this is the function that you need to call to make it "resizable"...
IMixerPinConfig::SetAspectRatioMode(AM_ARMODE_NONE)
gabest
15th February 2003, 02:22
Thanks, I'm going to try it.
edit: The parameter was called AM_ARMODE_STRETCHED, but it worked great.
downloada
15th February 2003, 13:49
Originally posted by gabest
This is easy to answer, different streams might need different decoders downstream. This is why ogm's splitter (switching inside the filter) is not very good if you want to put differently encoded audio streams in one file.
thanks for clearing that up! i didn't think of that problem...
it would really be great, if the switcher was included directly into reclock (already requested it via email...), that would really make things easier (and you don't need to install/register a separate filter)...
cu
((( atom )))
15th February 2003, 23:22
sadly i have to report that the mute-button solution has a very annoying issue: when i watch a movie, that spans over two discs (mine all do) reclock defaults to playing both audio-streams when loading a new file. so i have to get up and mute one channel again :(
Chibi Jasmin
16th February 2003, 13:44
It still creates(!) a logfile, when logging is disabled...not needed I think...
And why does anybode need a separate stream switcher at all (morgan)...I repeat my question: DirectSound stream switching has been handled by the players for a long time now without any seperate stream switcher filter...why doesn't this work with ReClock? Player's or ReClock's fault?
Chibi Jasmin
18th February 2003, 22:11
The mute button is no solution for dual audio streams here, even if I mute a stream, it still plays (avi with ac3) with 'clickering' sound all the time...also ZoomPlayer crashes sometimes with dual audio files
oddball
19th February 2003, 11:17
I have a new problem with 99g. When playing back 25FPS with AC3 and SPDIF output the audio and video repeats itself every few seconds like it's got stuck in a sampling machine 'N-N-Nineteen' style.
I have to manually set to nearest integer to stop it.
Sumster
24th February 2003, 15:43
Oddball....
I have the same problem with 25fps PAL movies... with Reclock, it skips when using AC3 out. How did you correct the problem? No settings seem to alleviate it on my setup.
fortunately, I have very few 25fps clips....
Sumster
Ewi
24th February 2003, 16:34
Hi!
I have 15fps anime clips here. At the moment Reclock does no adaption when used with "Auto" Media Adaption ("No rate adaption can be made for this media..."). So I'm switching to PAL60 and switch to "Refresh Rate /4" in speed and its seems to adapt correctly.
So my question: is it possible to do this internally in "Auto" mode; i.e. if the refresh rate is a multiple of the media playback rate it is adapted to this factor, for example:
15 fps and PAL60/NTSC => Refresh Rate /4
20 fps and PAL60/NTSC => Refresh Rate /3
so a kind of more general way for rate adaption.
Thank you...
oddball
24th February 2003, 23:16
I set ReClock to nearest integer. Still glitches ehere and there slightly but does not do the repeated audio thing. Effectively by setting to anything other than auto the icon goes yellow.
RobScreene
25th February 2003, 11:49
Hi,
Is it possible to get the mode to default to "integer" or "original" as opposed to Auto?
If I set to original, then close and re-open my player, ReClock defaults back to Auto.
thanks and regards,
Rob.
eLupus
6th March 2003, 13:08
I have a problem with ReClock filter merit.
Even if i set ReClock's filter merit to 200001 = MERIT_DO_NOT_USE, Zoomplayer always load's the filter nomatter what custom audio device i set. This includes windows media player which also load's it at all time as soon as it is registered.
I wish to have the reclock filter registered, but only loaded when zoomplayer requests it.
I also have a problem with lockups if i try play SVCD's. I can still access the reclock filter through it's tray icon, but zoomplayer is completely locked. Only way is to kill it through taskmanager. I attatched my log, though i couldn't see anything weird it it.
Have you noticed these problems ogo?
Joakim Plate
Perplx
7th March 2003, 02:36
A feature I'd really like to see is a "save wav" or "disk writer" it really come in handy for windows media etc.
Loul
7th March 2003, 03:08
Hello !
I've been reading all this LLLLLLLLLOOOOOOONNNNNNNNNNGGGGGGGGG thread (long but still interesting at least for the parts I could get ;) ) and it made me think at a wish I have had in my diistorted mind.
I'm a kind of weirdo who thinks that it s most important to watch a movie as much as the director wanted it to.
So that's why I thought of one day planning to learn how to encode movies at 24 fps (to be honnest 23.976 FPS is considerated as ok for me but PAL 25 @ FPS ain't :) ).
Reclock or a modified version of it could solve this issue in a very elegant way without making it so complicated to encode (especially concerning the audio of course).
So is it possible with Reclock (or could it be possible) to force movies to be played at 24FPS ?
I guess that it could be on a PC Monitor (the idea would be also not to be forced to change its refresh rate though that could be an option if the end user wants it).
When it comes to TV, I don't know if 24 FPS is too far away from the usual 25 FPS for the TV to sync to.
I hope I was clear enough. Tell me if not !
And if there s no hope , well I can tell him to ogo in French as I'm French too ! :p
billou2k
7th March 2003, 10:15
does somoeone knows what's happenning to ogo by the way?
its been weeks since we last saw him
ogo
10th March 2003, 12:48
Hi guys :)
Well, ogo is working hard on the next version of ReClock !
I'm working on the last cause of stutter i know of : presentation of frames to the renderer during vertical sync. I've nearly managed to solve this problem with the implementation of another filter that sits just before the renderer in the graph. This filter is controlled by reclock and does some interesting stuff ...
This filter will add some interesting capabilities :
- you will be able to see "on screen" if reclock is doing its work correctly (this filter will shown you on the picture when VSYNC occurs). For people with multi-cards display, you will have the response if reclock is useful to you or not.
- this filter is able to correct the frame presentation/vsync problem.
From initial testing, it is promising, but i have a lot of trouble to make this little filter work with DVD mode. Maybe a specialist of DirectShow could help me, because i don't find many help on newsgroup and/or google. My filter derives from CTransInPlace, and i have problem with format changes that occurs during playback with the MPEG2 decoder and the renderer (VMR7/9 or Overlay mixer). I detect correctly format change in my Transform() function, but i'm not able to propagate them correctly downstream or upstream. For example when the MPEG2 decoder switch from NTSC to PAL, the renderer is not notified, and then display garbled pictures.
Maybe Gabest you could help me there ? I saw you post some help on microsoft directx newsgroups :) I already spent 1 full day trying to solve that without success.
There is a microsoft page that speak of this here (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/htm/queryacceptupstream.asp)
I also had some new ideas for AC3 which i have to implement ...
Also some other news : the author of ZoomPlayer told me that next beta of ZP will have an audio switcher compatible with reclock. It will solve some problems :)
So it may be a few weeks until next version :)
ogo
10th March 2003, 12:52
Loul>To respond you question Loul. If you want to play movies at the right speed, simply set you monitor refresh rate to a multiple of 24hz (72hz for example), and then when you will play of 23,976 movie, reclock will make it run at 24 fps. If you play a 25fps movie, simply force it to 24fps in the media adaptation tab, on you're done :)
Ewi>Good idea, i'll try to implement that in next version (something more universal)
Chibi Jasmin
10th March 2003, 14:07
Originally posted by ogo
- you will be able to see "on screen" if reclock is doing its work correctly (this filter will shown you on the picture when VSYNC occurs). For people with multi-cards display, you will have the response if reclock is useful to you or not.
This absolutely rocks! And of course your other ideas are also more than welcome...I love ReClock!
gabest
10th March 2003, 14:25
Hm-hm, what should I say about the video filter... I think I have already said it wasn't a good idea :) The less important prob with it that you are copying the pic +1 time and mpeg2 decoders can't use hw accel on the renderer, the more important is that a video transform filter (forget transinplace, it prooved to be useless in many discussions) is the only filter which has to handle dynamic format changes from both directions, which brings a lot of problems and some of them are _impossible_ to solve because of the nature of dshow filters.
Let's start with the easier one, when the old renderer wants to change between yuv and rgb or wants to change the pitch of the images. After getting a buffer from the renderer and Receive calls your Transform function, the sample will have a new media type attached to it to signal that the format (and also the size of the buffer!) has changed. This can already be a major pain if the upstream filter doesn't offer such a format and you have to color convert it, considering the number of format-format pairs, this seems impossible to handle (don't even try this approach :)). So, what can be done then? You can't attach this new media type on the sample requested upstream because you have no control over that allocator. The solution is of course to create and use your own allocator! When the downstream format changes at Transform, skip that frame and notify the upstream allocator to return the next sample with the new media type (format change can often make the decoder show blackness till the next keyframe) and also to recommit its buffers when they are smaller than needed. There is only one problem left, what to do when the renderer wants to switch into a format not available upstream. One would think that simply passing the available types from upstream to downstream in GetMediaType is enough, but it's not! There are cases when a decoder says it will decode to format x and when giving them a sample with media type x attached they just don't accept it. For example avi decompressor likes to offer all commonly used formats and only switch to one of them when the wrapped vfw codec can decompress to it, most older vfw codecs are "rgb-only". Then there is the divx5 decoder, it has some confusing label (extended overlay or something) in its options, but it is simply for disabling anything else than yv12, though it still offers all formats on its output when enumerated. The solution to this prob is to call upstream pin's QueryAccept from your own output's QueryAccept, but some lazy filters or renderers could just attach a new media type on the next sample without asking, rule one: "trust no filters" :P.
Case, number 2. the upstream filter wants to change the format (dvd switching 480/576 lines is the most common case). There is one major problem with this, not all renderer is smart enough to do it... The old gdi/ddraw renderer is completly dumb, can't do anything, overlay mixer is so-so, but I couldn't perform a change with it flawlessly so far, vmr7/9 are the most flexible, unfortunately you can't expect that they will be the renderer all the time... So, the new media type arrives on the input sample and you notice that. If there was a type change in the other direction too, well, then hm, hm-hm, let's just die then :P, if there wasn't we need to request a new sample from downstream which format matches so we can copy the frame on it. There could be several samples checked out and waiting to be rendered (double/tripple buffering is a good idea), so call BeginFlush/EndFlush first on the renderer's input, this will make them released. Next step is to recommit the renderer's alloctor to inform it about our possibly larger image buffer needs. Then call GetBuffer again (the first one was hidden inside the baseclasses' Receive) to get a new sample, copy the pic and attach the new media type. If you are lucky the renderer will accept it and not show garbage on the screen... To make sure it will accept it one could use QueryAccept or DynamicQueryAccept again on the render's input pin, BUT the return codes are varying on a wide range depending on the renderer and some of them will even change the format by just calling QueryAccept! I wish they had found out a better way to do these dynamic format changes, but now it is too late... Oh, I almost forgot, some filters try to call ReceiveConnection with the new type instead of attaching it on the sample, which can fail transparently to you in the baseclasses if you didn't set CBasePin::m_bCanReconnectWhenActive to TRUE. I hope I didn't leave out anything, that's all for now.
p.s. Something completly else, do you happen to use MediaDet from reclock? I've got a few unreleased object because of it, rare but happens. MediaDet is a poor solution, this is making those undeletable avi files in explorer too.
ogo
10th March 2003, 15:22
Thanks a lot Gabest for your long and precise response !
I know you did tell me in the past not to add a filter before the renderer, but well i just add to try :) But i learn the hard way ...
At first i tried a "normal" transform filter, but it was not very pretty because of the buffer copy that take place. I thought an in-place filter does only some copies in rare cases. Am i wrong ?
I'll study your explanations carefully (well i don't understand everything for now). But just to reassure me, provided that my filter don't care at all about video formats, is it possible to make a completely "transparent" filter (like nullip -but working-) ? If not then my filter is useless. It's a pity because when there are no format change it does work great (with AVI files for example) ...
I'm not a specialist at all of directshow, but the more i use it the more it make me think of a big messy beast, full of workarounds, tricks, bugs, etc ... Well something not clean at all. In reclock i have to do horrible things like holding interfaces to other filters to achieve my goals ...
I work on .NET stuff at work. Even if .NET has a lot of bugs in the initial release, at least it's understandable, elegant, and pleasing to work with.
About mediadet, yes i use it. It's the only solution i have found to find the framerate of files (i use IDVDInfo2 for DVD). I don't know any other solution in DirectShow. Would you have any other idea ?
The only pointer release problem i know of is with scheduled events inside the reference clock. It happens sometime. Also Sonic DVD filters seem to fail to release reclock sometimes (maybe because of the reference clock). Maybe it's the same bug.
gabest
10th March 2003, 16:05
Originally posted by ogo
At first i tried a "normal" transform filter, but it was not very pretty because of the buffer copy that take place. I thought an in-place filter does only some copies in rare cases. Am i wrong ?The easiest would be to peek how it was implemented. The prob is that it takes the allocator management away from you and leaves no chance to do format changes correctly. You'll never know what's going on and why if you rely on the baseclasses too much.I'll study your explanations carefully (well i don't understand everything for now). But just to reassure me, provided that my filter don't care at all about video formats, is it possible to make a completely "transparent" filter (like nullip -but working-) ?Maybe there is a way, but I haven't found it yet :) I think there is a hope since MS was brave enough to put a DMO wrapper in wmp9 both in front of the video and audio renderers. But I don't have any video effect plugins installed to test it.If not then my filter is useless. It's a pity because when there are no format change it does work great (with AVI files for example) ...Btw, how do you put it into the graph? With a high merit or using reclock?I work on .NET stuff at work. Even if .NET has a lot of bugs in the initial release, at least it's understandable, elegant, and pleasing to work with.OT question: what's your opinion, why wasn't dshow ported to .net in dx9? I'm not into managed code too much, but for example can c# access memory from the outer world? If not it won't ever be worth writing filters in .net, moving in and out video buffers would be a bottleneck for sure.About mediadet, yes i use it. It's the only solution i have found to find the framerate of files (i use IDVDInfo2 for DVD). I don't know any other solution in DirectShow. Would you have any other idea ?With vob (cyberlink mpeg2/ac3filter) the whole mpeg2 splitter seems to be stucked, and with ogm I can see four MediaDetPin listed as unreleased. You could walk the graph and look for interfaces on filters and pins, and/or extract connection media types and see the avgtimeperframe member of videoinfoheader, it's not that hard at all.
ogo
10th March 2003, 16:55
The easiest would be to peek how it was implemented. The prob is that it takes the allocator management away from you and leaves no chance to do format changes correctly. You'll never know what's going on and why if you rely on the baseclasses too much.
Yes but it will take me ages to understand all this stuff ... It should be so simple to write a "do nothing" filter ...
Maybe there is a way, but I haven't found it yet I think there is a hope since MS was brave enough to put a DMO wrapper in wmp9 both in front of the video and audio renderers. But I don't have any video effect plugins installed to test it.
I don't have any video effect filter neither. Maybe it would be the way to go ?
Btw, how do you put it into the graph? With a high merit or using reclock?
Well, the dirty way ... Once reclock reach CompleteConnect, i add my filter to the graph in front of the overlay mixer, vmr7 or vmr9, or bsplayer internal renderer. If connection fails, i restore the graph. At least it seems like doing it this way works fine, and i can control the stuff (if reclock is not in a graph nothing harmfull will be done).
OT question: what's your opinion, why wasn't dshow ported to .net in dx9? I'm not into managed code too much, but for example can c# access memory from the outer world? If not it won't ever be worth writing filters in .net, moving in and out video buffers would be a bottleneck for sure.
My work on .NET is very far away from directshow and has nothing to do with video. Managed code can share data across threads, and i don't think performance would suffer so much. Why ? in C++ you have to think 90% of the time if you copy data or reference existing data with pointers, and at the end you end up why a lot of data copying because of allocations/free problems (who owns the data, etc ...). Not really completely trues with COM anyway ...
In .NET 99% of manipulated objects are references, but copies are easy to involve if you don't know what the framework does with your objects. That's why many people think .NET is slow : they tried a 10 lines badly written sample ...
Anyway the garbage collector can be a serious problem : it will take cpu time each time it's triggered ... Maybe it's THE main problem
Just my 2 cents :)
With vob (cyberlink mpeg2/ac3filter) the whole mpeg2 splitter seems to be stucked, and with ogm I can see four MediaDetPin listed as unreleased. You could walk the graph and look for interfaces on filters and pins, and/or extract connection media types and see the avgtimeperframe member of videoinfoheader, it's not that hard at all.
You mean by querying the input pin of the video renderer with ConnectionMediaType() thus obtaining VIDEOINFOHEADER or VIDEOINFOHEADER2 ? I figured out only yesterday it was possible while writing my transform filter ! The only problem is that i would like to know the framerate before the graph filter is run. have to try that anyway ...
gabest
10th March 2003, 17:35
Originally posted by ogo
I don't have any video effect filter neither. Maybe it would be the way to go ?DMO's are transform filters usable outside the filter graph too, you could try to create one and use the stable-looking DMO wrapper, but I'm not sure how it handles format changes. If it does then probably does it better than you would now :)Well, the dirty way ... Once reclock reach CompleteConnect, i add my filter to the graph in front of the overlay mixer, vmr7 or vmr9, or bsplayer internal renderer. In the past I noticed that win2k renders avi splitter's pins in reverse order, that can be a problem for you unless it was fixed :P... Managed code can share data across threads, and i don't think performance would suffer so much. ...I didn't mean this. Think of a filter running in the virtual machine and the filter graph and other filters on the real, will they see eachothers media samples or does the memory have to be copied by the framework somehow back and forth?
(I liked COMs refcounting and expected something similar in .net too, just without the needed work to implement CUnknown and things making it fool-proof...)You mean by querying the input pin of the video renderer with ConnectionMediaType() thus obtaining VIDEOINFOHEADER or VIDEOINFOHEADER2 ?Yea, and looking for IDvdInfo2 on the dvd nav too.The only problem is that i would like to know the framerate before the graph filter is run. have to try that anyway ... The media types are set before running the graph, though some filters are not filling out avgtimeperframe... but then mediadet will not succeed as well.
ogo
11th March 2003, 10:14
DMO's are transform filters usable outside the filter graph too, you could try to create one and use the stable-looking DMO wrapper, but I'm not sure how it handles format changes. If it does then probably does it better than you would now
Tried it with no luck with a video filter effect i found. Conncetion is ok, but the graph doesn't event start.
In the past I noticed that win2k renders avi splitter's pins in reverse order, that can be a problem for you unless it was fixed :P
Funny ... But CompleteConnect() is the last code i know is called before a possible Run() of the filter. Well anyway missing the intermediate filter creation is not really a problem. Reclock can work fine without it.
I didn't mean this. Think of a filter running in the virtual machine and the filter graph and other filters on the real, will they see eachothers media samples or does the memory have to be copied by the framework somehow back and forth?
Ok, if you mean mixing filters in managed and unmanaged code, well there you have a problem. It would imply a lot of copying because of .net structures management (some marshalling/unmarshalling stuff is necessary and it means copying)
Yea, and looking for IDvdInfo2 on the dvd nav too.
I already use IDvdInfo2. I tried querying the input pin of the video renderer with ConnectionMediaType(), but get only 0 in AvgTimePerFrame (even during playback). Tried with many file formats without success. I also tried get_AvgTimePerFrame() on the IBasicVideo interface without success. I'll try walking all the graph and see other pins and see if it work. Strangely, mediadet works fine in any case on my XP machine anyway, but you're not the only one to have problems with it.
:)
kallekill
11th March 2003, 13:56
I watch about 1 movie everyday so I'm quite the serious beta tester of Reclock :). I have found two problems, and what I understand of the above post you are trying to correct at least the first one. The problems I have are:
1. Reclock is sensitive to flukes in the movie. Movies that have bad frames or are badly IVTC'd (And many have at some point or another although you might not notice it because the frame isn't moving much) often fall out of sync. The picture that is. It starts to stutter and you have to pause/play to get it in sync again.
2. Audio falls out of sync in some movies. I have only encountered it with MPEG1 files. I seldom watch mpeg1 files and when I do it is Simpsons and sync problems aren’t that hard to spot. I recently watched an episode of 24 and noticed that at some parts it seems as if there were dropped frames during the capture. At these points the audio falls out of sync and you can watch the audio sync go to about 500 ms in reclock. It slowly moves back to sync and ~10 seconds later it is fine again. If I play the clip without Reclock, the audio stays in sync and you only see a slight stutter were the frames are dropped. This also happens sometimes at the parts were they cut out the commercials.
Ogo, if you need I can send you a clip to help you troubleshoot the problem if you aren't already aware of it.
ogo
11th March 2003, 17:18
Yes this problem was reported to me by some persons, but i didn't see it myself. So i'm very interested by a little clip (<= 20MB) if it's possible for you, and some indications that tell me where the desync occurs :)
I have also been told that latest version (99g) was showing more this problem than version 99f ... Did you see that ?
kallekill
11th March 2003, 22:10
Do you mean the problem with audio desync or the refresh rate falling out of sync?
kallekill
11th March 2003, 22:46
I haven't noticed the problem with audio getting out of sync before so it could have something to do with the latest version, but I don't watch mpeg1 movies that much so I can't really say.
ogo
12th March 2003, 10:13
Do you mean the problem with audio desync or the refresh rate falling out of sync?
I was meaning problem 2 :)
kallekill
12th March 2003, 11:04
Do you have an ftp or something I can upload it to? I tried sending you the file by mail but the mail bounced. The clip is 14 MB. Maybe we can take it over irc.
ogo
12th March 2003, 14:22
@kallekill: i'm available after 7PM GMT. Is it possible for you ? Please send me an email with your ICQ number.
@Gabest : i'm still struggling to get this filter s... working. I found this on MSDN. Do you agree with what is said there ?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwmt/html/DynFormat.asp
gabest
12th March 2003, 15:16
Originally posted by ogo
@Gabest : i'm still struggling to get this filter s... working. I found this on MSDN. Do you agree with what is said there ?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwmt/html/DynFormat.asp Yea, this is the only explaination of format changes, but as I see they are extending it a bit every time I go there :P What do you not understand there?
ogo
12th March 2003, 16:02
From what i understood :
1 - if i don't want a sample copy to take place (i add only the OSD i want to put on the picture), both my pins muse share the same allocator
2 - for downstream->upstream format changes the allocator must be given by the downstream filter (ie renderer) if i want to be able to receive format changes from the renderer. It means i must use one allocator and this allocator is the renderer's one. It should also mean that all filters that connected to a renderer use the renderer's allocator.
3 - QueryAccept must be crossed between in<->out
4 - for upstream->downstream format changes, i have nothing special to do, because they are attached to the sample. I just have to pass them downstream.
5 - they say in microsoft doc, that the sample buffer size should not increase with a downstream format change, so i should'nt have to worry about this
From what i have seen, 1/2/3 are ok in the default trans-ip implementation, but 4 does not work (i see downstream format changes in the sample, but the renderer does not take them in account). I don't understand why at all.
Also, i see the renderer changing the width of the video on its input pin (maybe changing the stride?), but again my upstream filter does not see it. Could it be a problem of "how many time is called GetBuffer() on the renderer's allocator" (called 2 times instead of one thus losing the change ?)
Maybe the best solution for me would be to rewrite completely CTransInPlace to understand it exactly.
gabest
12th March 2003, 17:06
1. yep, just never read that buffer, because its speed you can call it "write-only" :)
2., 3. must be true, has to be tried.
4., 5. msdn writes up->down changes must not change the buffer size, but if you follow that advice how to change from 480 to 576 lines? mpeg2 decoders can do it somehow, and I think they do it either by calling receiveconnection (even if you have an inplace filter, this call will be on your input pin and not transparently forwarded) OR manually flushing the checked out samples, recommiting the allocator of the renderer and attaching the new media type (which I tried and worked with vmr7/9, but not very well with the overlay mixer, and not at all with the old one). Both methods are used by ac3 decoders and audio renderers have no problem doing format changes on-the-fly (they never ask back for up<-down changes though, and I think video renderers shouldn't either), I know this because in my audio switcher I have to forward them.
oddball
12th March 2003, 17:22
When trying to play DiVX5.03 encoded AVI's with any player but it's own included player. The players crash. If I uninstall ReClock they play fine. Can repeat. I have the same problem with DiVXG400 installed. DiVX5.03 does not like either of these filters for some reason. It does not do this when using ffdshow to playback DiVX5.03 encoded AVI's but I get green and purple smearing in ffdshow so it's not a good option.
kallekill
12th March 2003, 20:12
Oddball: Which IDTC to you use in ffdshow? Switching it to Xvid might help. It helps on xvids that get green smears otherwise.
ogo
13th March 2003, 09:22
@oddball. I'll check that. Didn't have any problem here with divx 5.03 playing everything i could. Could you send me a little cut of your file by email ?
klaro
13th March 2003, 10:26
ogo, i use reclock for dvd-playback and 0.99g works really great. unfortunately i have some trouble with hdtv-playback. using zoomplayer with a custom graph (elecard demux, sonic audio + video filter, reclock as audio renderer). i try to playback hdtv-mpeg-files from my hd at 48 hz refresh rate. the hdtv-mpeg definitely has 23.976 fps, reclock on the other hand detects 30 fps and wants me to change to a multiple of 60 hz.
why does reclock detect 30fps? where does this information come from?
greetings
klaus
oddball
13th March 2003, 20:08
kallehil: If I playback DiVX5.03 encoded videos with ffdshow I get green and purple smears (ANy version of ffdshow) and ReClock and DiVXG400 do not crash the player. If I set ffdshow to playback DiVX5.03 encoded video (With any version of Xvid installed. Tried Nics and Koepi's various builds etc) I get 'White' and purple smearing.
If I try to playback DiVX5.03 encoded video using DiVX5.03's filter and ffdshow not in the filter chain whatsoever (disabled for DiVX5.03 playback) with either ReClock or DiVXG400 installed. All the players crash 90% of the time.
The only exception being the DiVX5.03 player itself but it jerks like crazy with DiVXG400 installed and DiVXG400 does not appear to even load. With DiVXG400 uninstalled DiVX5.03's player plays back smoothly (I know it's not ReClock specific but it lets you know what probelms I am experiencing).
ReClock also does not load when playing back in DiVX5.03's own player.
So there you have it. ReClock (Or DiVXG400) plus DiVX5.03 as a playback filter = crashed players (Excepting it's own player).
ffdshow = no crashes but smears in normal mode or Xvid playback mode.
I've copied via direct stream copy 2 very small clips from the problematic AVI's. Please check that A. You can play them back via ffdshow without smearing occuring and B. can play them back with a player like Zoom Player or BSplayer etc using DiVX5.03 filter and ReClock 99g installed without the player crashing (No ffdshow).
http://www.maunders.com/clip1.avi a little over 1 meg
http://www.maunders.com/clip2.avi a little over 2 meg
Thanks.
kallekill
13th March 2003, 23:06
I played it with ffdshow and got the green smearing effect. I didn't play it with divx 5 because I don't want to install it. I have only had problems with divx above 3.11.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.