Wednesday, April 6th, 2011, 00:00 UTC | ||
[00:00:46] | Jordack (Jordack!~jordack@69.131.44.221) has quit () | |
[00:26:44] | kwmonroe (kwmonroe!~kwmonroe@32.97.110.58) has quit (Quit: Ex-Chat) | |
[00:43:01] | jya (jya!~jyavenard@gw2.hydrix.com) has joined #mythtv | |
[00:43:01] | jya (jya!~jyavenard@gw2.hydrix.com) has quit (Changing host) | |
[00:43:01] | jya (jya!~jyavenard@mythtv/developer/jya) has joined #mythtv | |
[00:47:18] | mycoDA (mycoDA!~mycoDA@unaffiliated/mycosys) has quit (Quit: Something smells bad - I'm outta here) | |
[00:54:52] | gigem (gigem!~david@host103.16.intrusion.com) has joined #mythtv | |
[00:54:52] | gigem (gigem!~david@mythtv/developer/gigem) has joined #mythtv | |
[00:54:52] | gigem (gigem!~david@host103.16.intrusion.com) has quit (Changing host) | |
[00:58:41] | davide_ (davide_!~david@mythtv/developer/gigem) has quit (Ping timeout: 240 seconds) | |
[01:16:38] | Gibby (Gibby!~Gibby@204.118.10.244) has quit (Ping timeout: 276 seconds) | |
[01:16:53] | Gibby (Gibby!~Gibby@204.118.10.244) has joined #mythtv | |
[01:26:33] | andreax1 (andreax1!~andreaz@p57B92D44.dip.t-dialin.net) has joined #mythtv | |
[01:27:35] | mike|33 (mike|33!~mike@c-24-21-63-118.hsd1.or.comcast.net) has joined #mythtv | |
[01:27:41] | purserj_ (purserj_!~purserj@hosting.collaborynth.com.au) has joined #mythtv | |
[01:27:48] | jannau_ (jannau_!~janne@chybek.jannau.net) has joined #mythtv | |
[01:28:20] | clever_ (clever_!~clever@142.167.146.131) has joined #mythtv | |
[01:33:55] | mike|2 (mike|2!~mike@c-24-21-63-118.hsd1.or.comcast.net) has quit (Ping timeout: 240 seconds) | |
[01:33:56] | purserj (purserj!~purserj@hosting.collaborynth.com.au) has quit (Ping timeout: 240 seconds) | |
[01:33:57] | jannau (jannau!~janne@chybek.jannau.net) has quit (Ping timeout: 240 seconds) | |
[01:33:59] | clever (clever!~clever@142.167.146.131) has quit (Ping timeout: 240 seconds) | |
[01:34:00] | andreax (andreax!~andreaz@p57B92D44.dip.t-dialin.net) has quit (Ping timeout: 240 seconds) | |
[01:34:00] | knightr (knightr!~knightr@mythtv/developer/knightr) has quit (Ping timeout: 240 seconds) | |
[01:34:35] | knightr (knightr!~knightr@mythtv/developer/knightr) has joined #mythtv | |
[01:40:45] | jya (jya!~jyavenard@mythtv/developer/jya) has quit (Quit: jya) | |
[01:42:38] | zombor (zombor!~zombor_@kohana/developer/zombor) has quit (Remote host closed the connection) | |
[01:51:00] | knightr (knightr!~knightr@mythtv/developer/knightr) has quit (Read error: Connection reset by peer) | |
[01:51:29] | knightr (knightr!~knightr@mythtv/developer/knightr) has joined #mythtv | |
[01:52:19] | mag0o (mag0o!20001@slackhost.lynchmv.com) has quit (Ping timeout: 248 seconds) | |
[01:52:25] | mag0o (mag0o!20001@slackhost.lynchmv.com) has joined #mythtv | |
[01:55:03] | J-e-f-f-A (J-e-f-f-A!~J-e-f-f-A@unaffiliated/j-e-f-f-a) has quit (Quit: Oh No!!!! ;-)) | |
[01:58:44] | J-e-f-f-A (J-e-f-f-A!~J-e-f-f-A@unaffiliated/j-e-f-f-a) has joined #mythtv | |
[02:31:32] | jya (jya!~jyavenard@mythtv/developer/jya) has joined #mythtv | |
[02:37:24] | iamlindoro: | dblain, I was curious-- mythbackend/services/myth.h has a scriptableMyth class, but content has no equivalent class-- is there a reason the content service isn't scriptable/shouldn't be? |
[02:43:17] | kwmonroe (kwmonroe!~kwmonroe@cpe-70-113-204-146.austin.res.rr.com) has joined #mythtv | |
[02:50:11] | knightr (knightr!~knightr@mythtv/developer/knightr) has quit (Ping timeout: 252 seconds) | |
[02:50:35] | knightr (knightr!~knightr@mythtv/developer/knightr) has joined #mythtv | |
[02:55:12] | jya (jya!~jyavenard@mythtv/developer/jya) has quit (Read error: Connection reset by peer) | |
[02:55:13] | jya_ (jya_!~jyavenard@gw2.hydrix.com) has joined #mythtv | |
[02:55:13] | jya_ (jya_!~jyavenard@gw2.hydrix.com) has quit (Changing host) | |
[02:55:13] | jya_ (jya_!~jyavenard@mythtv/developer/jya) has joined #mythtv | |
[03:05:03] | elmojo: | markk: playing around with the buffers – found something interesting |
[03:06:40] | elmojo: | the problematic video I have seems to have issues with release_avf_buffer when it calls DeLimboFrame – seems like it never finds the frame in the limbo queue |
[03:07:26] | elmojo: | and the HACK in the DeLimboFrame gets invoked continuously |
[03:07:56] | elmojo: | I'm pretty sure that every time DeLimboFrame is called it *should* find the frame – is that your understanding? |
[03:12:00] | markk: | elmojo: I'm not sure – though I wonder whether the comment in that code might be part of the problem |
[03:16:12] | elmojo: | I think it probably is |
[03:16:57] | elmojo: | if we aren't delimboing frames properly then it might explain why we seem to need more buffers to get playback working correctly with VDPAU |
[03:22:28] | elmojo: | stupid question but how can I print a pointer using QString? |
[03:23:03] | markk: | typecast it to something like long long |
[03:24:25] | elmojo: | thanks, that worked – the compiler hint should have clued me in |
[03:24:52] | elmojo: | I'm trying to keep track of the frame pointers getting added and released |
[03:25:25] | markk: | if ffmpeg is holding on to buffers because it never saw a start code for that frame, then we need to ensure we only send packets once a key frame is seen. though if we take a 'clean' source such as blu ray h.264 – we should always start with a key frame ?? |
[03:27:55] | elmojo: | we are having problems with clean sources though |
[03:33:52] | markk: | elmojo: and a clean source would probably not be annex B – and the h264 parser works with annex B. see AvFormatDecoder::H264PreProcessPkt |
[03:34:51] | knightr (knightr!~knightr@mythtv/developer/knightr) has quit (Read error: Connection reset by peer) | |
[03:35:20] | knightr (knightr!~knightr@mythtv/developer/knightr) has joined #mythtv | |
[03:38:06] | elmojo: | markk: how in the world does a frame get added to the limbo queue in videobuffers? |
[03:39:11] | elmojo: | when we run get_avf_buffer we call GetNextFreeFrame which adds the frame to the available queue – when we run release_avf_buffer we try to remove a frame from the limbo queue |
[03:39:32] | elmojo: | lemme check the size of the limbo queue during get/release and see if anything is in there |
[04:03:36] | elmojo: | markk: it looks like limbo.size() is always 1 – weird |
[04:07:55] | ** markk likes the idea of a GetHash method ** | |
[04:08:20] | markk: | elmojo: is that just for your broken clip? |
[04:10:23] | elmojo: | markk: just playing with the same broken clip |
[04:11:06] | elmojo: | seems like it's putting the frame in the limbo queue but it's being removed immediately by ReleaseFrame |
[04:11:40] | elmojo: | need to find out who's calling ReleaseFrame |
[04:13:32] | elmojo: | markk: tried another clip and same thing... the limbo queue frame gets removed immediately |
[04:16:50] | elmojo: | markk: this code just seems wrong on so many levels |
[04:17:08] | elmojo: | it appears that we are releasing frames before they are fully decoded |
[04:17:40] | elmojo: | or better states – we are releasing frames for processing before they are finished decoding |
[04:18:01] | markk: | elmojo: I'd suggest using the patch I posted the other day and investigate what is happening in the h264 parser... |
[04:18:32] | markk: | (probably not the most helpful comment of the day) |
[04:20:50] | elmojo: | I still don't get the relationship with the h264 parser and the buffers |
[04:23:45] | markk: | elmojo: if that hack comment is relevant, then we are potentially throwing frames/packets at ffmpeg before we've seen a key frame. ffmpeg then holds on to them indefinitely, waiting on the relevant data to 'complete' the frame – which never arrives. |
[04:24:19] | markk: | it ties up with the symptoms – esp. given that everyting else we've tried hasn't worked:) |
[04:27:44] | elmojo: | markk: like I said we are releasing the frames for display before they are fully decoded |
[04:28:09] | elmojo: | it's presents a race condition |
[04:28:32] | elmojo: | when videos take longer to decode frames and need more reference frames the more likely we will see corruption |
[04:34:29] | Gene425 (Gene425!~textual@173.208.68.59) has joined #mythtv | |
[04:37:39] | markk: | elmojo: ok, sorry. I see where you're coming from now. in that case, vanilla trunk is probably not the best place to test. with my patch ( :) ), with vdpau it does a more accurate job of marking frames as used for reference. should be easier to then only release frames to the 'decoded' queue once they have been cleared (I think) |
[04:38:51] | elmojo: | markk: ffmpeg is responsible for calling the release of a buffer when it is finished |
[04:40:35] | markk: | elmojo: I'm probably not helping here. trying to work on 2 different aspects of the code at the same time is a recipe for disaster |
[04:47:19] | elmojo: | markk: no worries, I just decided to dig a little tonight – I'll probably regret it in the morning :) |
[04:53:25] | markk: | elmojo: so presumably the problematic calls is AvFormatDecoder::ProcessVideoFrame line 3006 ? |
[04:54:52] | elmojo: | markk: yes, that's part of the problem for sure |
[04:55:08] | elmojo: | we have a race condition between the player and the decoder |
[04:56:25] | markk: | what happens if you delete that call and use it instead of (or as well as) the delimbo call in the release_buffer method ? |
[04:56:26] | elmojo: | we should allow the decoder to release a frame for displaying but keep the buffer around until it calls release_avf_buffer |
[04:56:46] | elmojo: | that's the key |
[04:57:20] | elmojo: | basically ReleaseFrame shouldn't call limbo.remove |
[04:58:21] | elmojo: | and we shouldn't ever allow a frame to become available again until it's finished decoding AND displaying |
[05:00:23] | elmojo: | markk: I think we need to have separate buffers for decode and display |
[05:01:57] | elmojo: | would that be too expensive to copy a frame that is ready for display (ie. ReleaseNextFrame) to a queue for displaying? |
[05:02:25] | elmojo: | and then just let ffmpeg do a release_avf_buffer to move the buffer from limbo to available |
[05:03:43] | elmojo: | I don't believe that the decoder necessarily releases buffers in display order |
[05:04:12] | markk: | elmojo: I'm not sure you really need separate buffers – just a separate queue? |
[05:05:12] | markk: | part of the confusion with the current code is that frames can be present in multiple gueues |
[05:12:04] | elmojo: | markk: I think it's dangerous to have 2 masters controlling the queues |
[05:12:31] | elmojo: | you've got the decoder creating/destroying buffers and the player using them |
[05:12:55] | elmojo: | maybe it will work ok though |
[05:14:25] | elmojo: | I think maybe we just need to remove the limbo.remove() from ReleaseFrame for sure |
[05:15:09] | elmojo: | and don't allow DeLimboFrame to do limbo.remove if the frame hasn't been displayed yet |
[05:16:40] | elmojo: | wait... which gets me back to my point if the decoder calls release_avf_buffer on a frame before it gets displayed it can be destroyed |
[05:17:02] | jannau_ is now known as jannau | |
[05:17:50] | elmojo: | we avoid this right now by doing limbo.remove in ReleaseFrame which prevents DeLimboFrame from moving the frame to the available queue |
[05:18:00] | elmojo: | markk: does this make sense? |
[05:20:23] | markk: | I think so :) |
[05:22:02] | elmojo: | markk: how about this – we keep a list of released frames by the decoder when release_avf_buffer is called and check everytime DoneDisplayingFrame is ran if any frame that is done displaying, if so remove from all queus and make available |
[05:22:46] | elmojo: | so basically we just track which frames are no longer needed by the decoder and when we are finished with them we then dequeue them |
[05:23:13] | elmojo: | simple enough in theory |
[05:23:41] | markk: | just to be clear – a frame that is still used for reference by the decoder can be displayed. is that right? (I think so) |
[05:24:28] | elmojo: | I believe that is correct |
[05:38:18] | elmojo: | markk: safeEnqueue is dangerous as it only allows a frame to exist in one queue at a time |
[05:38:38] | elmojo: | we need to have frames be present in multiple queues at the same time |
[05:46:40] | elmojo: | markk: where do you set the number of buffers? |
[05:46:53] | elmojo: | (getting late and I'm tired of looking :)) |
[05:54:48] | jya_ (jya_!~jyavenard@mythtv/developer/jya) has quit (Remote host closed the connection) | |
[05:55:08] | jya (jya!~jyavenard@gw2.hydrix.com) has joined #mythtv | |
[05:55:08] | jya (jya!~jyavenard@mythtv/developer/jya) has joined #mythtv | |
[05:55:08] | jya (jya!~jyavenard@gw2.hydrix.com) has quit (Changing host) | |
[05:59:53] | andreax1 (andreax1!~andreaz@p57B92D44.dip.t-dialin.net) has quit (Read error: Connection reset by peer) | |
[06:00:41] | hansmuc (hansmuc!~hansmuc@ppp-188-174-106-134.dynamic.mnet-online.de) has joined #mythtv | |
[06:01:09] | hansmuc (hansmuc!~hansmuc@ppp-188-174-106-134.dynamic.mnet-online.de) has left #mythtv () | |
[06:06:04] | Gene425 (Gene425!~textual@173.208.68.59) has quit (Quit: Computer has gone to sleep.) | |
[06:07:53] | martin_ (martin_!~quassel@static-88.131.29.2.addr.tdcsong.se) has joined #mythtv | |
[06:13:46] | kwmonroe (kwmonroe!~kwmonroe@cpe-70-113-204-146.austin.res.rr.com) has quit (Read error: Operation timed out) | |
[06:13:55] | jams (jams!~jams@cpe-184-58-217-97.wi.res.rr.com) has quit (Ping timeout: 240 seconds) | |
[06:14:45] | mrand (mrand!~mrand@ubuntu/member/mrand) has quit (Ping timeout: 248 seconds) | |
[06:14:56] | skd5aner (skd5aner!~skd5aner@cpe-069-132-082-180.carolina.res.rr.com) has quit (Ping timeout: 264 seconds) | |
[06:15:17] | JEDIDIAH__ (JEDIDIAH__!~jedi@cpe-76-185-72-21.tx.res.rr.com) has quit (Ping timeout: 248 seconds) | |
[06:15:18] | pheld (pheld!~heldal@cl-5.osl-01.no.sixxs.net) has joined #mythtv | |
[06:15:18] | mrand (mrand!~mrand@ubuntu/member/mrand) has joined #mythtv | |
[06:15:22] | kwmonroe (kwmonroe!~kwmonroe@cpe-70-113-204-146.austin.res.rr.com) has joined #mythtv | |
[06:15:24] | jams (jams!~jams@cpe-184-58-217-97.wi.res.rr.com) has joined #mythtv | |
[06:15:56] | skd5aner (skd5aner!~skd5aner@cpe-069-132-082-180.carolina.res.rr.com) has joined #mythtv | |
[06:17:08] | JEDIDIAH__ (JEDIDIAH__!~jedi@cpe-76-185-72-21.tx.res.rr.com) has joined #mythtv | |
[06:25:57] | jya_ (jya_!~jyavenard@gw2.hydrix.com) has joined #mythtv | |
[06:25:57] | jya_ (jya_!~jyavenard@gw2.hydrix.com) has quit (Changing host) | |
[06:25:57] | jya_ (jya_!~jyavenard@mythtv/developer/jya) has joined #mythtv | |
[06:29:06] | jya_ is now known as jya | |
[06:29:15] | jya (jya!~jyavenard@mythtv/developer/jya) has quit (Client Quit) | |
[06:34:06] | Zombie (Zombie!~masterz@adsl-78-71.lex.bluegrass.net) has joined #mythtv | |
[06:34:47] | Zombie: | Can Myth TV use SQLite instead of MySQL? |
[06:34:58] | wagnerrp: | no |
[06:36:37] | Zombie: | What about that embedded MySQL setup that doesn't require a running server |
[06:37:05] | wagnerrp: | it has been considered, but not yet implemented |
[06:37:13] | wagnerrp: | one of those 'distant plans' |
[06:40:01] | wagnerrp: | installing an embedded database into the backend, listening externally would not be difficult at all |
[06:40:26] | wagnerrp: | but the plan is to replace all existing database calls with myth protocol commands |
[06:40:32] | wagnerrp: | which is a huge amount of work |
[07:59:21] | andreax (andreax!~Andreaz@tmo-101-163.customers.d1-online.com) has joined #mythtv | |
[08:42:53] | andreax1 (andreax1!~Andreaz@tmo-100-40.customers.d1-online.com) has joined #mythtv | |
[08:43:08] | andreax (andreax!~Andreaz@tmo-101-163.customers.d1-online.com) has quit (Ping timeout: 264 seconds) | |
[08:48:11] | andreax (andreax!~Andreaz@tmo-101-216.customers.d1-online.com) has joined #mythtv | |
[08:50:05] | andreax1 (andreax1!~Andreaz@tmo-100-40.customers.d1-online.com) has quit (Ping timeout: 276 seconds) | |
[08:54:10] | andreax1 (andreax1!~Andreaz@tmo-100-124.customers.d1-online.com) has joined #mythtv | |
[08:54:41] | andreax (andreax!~Andreaz@tmo-101-216.customers.d1-online.com) has quit (Ping timeout: 240 seconds) | |
[09:10:28] | andreax1 (andreax1!~Andreaz@tmo-100-124.customers.d1-online.com) has quit (Read error: Connection reset by peer) | |
[09:17:36] | andreax (andreax!~Andreaz@tmo-101-33.customers.d1-online.com) has joined #mythtv | |
[09:25:45] | jamesba (jamesba!~jamesba@gateb.kw.bbc.co.uk) has joined #mythtv | |
[09:32:31] | andreax (andreax!~Andreaz@tmo-101-33.customers.d1-online.com) has quit (Read error: Connection reset by peer) | |
[09:33:33] | andreax (andreax!~Andreaz@tmo-101-33.customers.d1-online.com) has joined #mythtv | |
[09:38:21] | jamesba_ (jamesba_!~jamesba@132.185.140.26) has joined #mythtv | |
[09:41:09] | jamesba (jamesba!~jamesba@gateb.kw.bbc.co.uk) has quit (Ping timeout: 248 seconds) | |
[09:52:05] | jya (jya!~jyavenard@mythtv/developer/jya) has joined #mythtv | |
[10:02:31] | jamesba_ (jamesba_!~jamesba@132.185.140.26) has quit (Quit: Leaving) | |
[10:03:09] | jamesba (jamesba!~jamesba@gateb.kw.bbc.co.uk) has joined #mythtv | |
[10:05:02] | mike|33 (mike|33!~mike@c-24-21-63-118.hsd1.or.comcast.net) has quit (Remote host closed the connection) | |
[10:05:50] | mike (mike!~mike@c-24-21-63-118.hsd1.or.comcast.net) has joined #mythtv | |
[10:06:16] | mike is now known as Guest13169 | |
[10:19:22] | andreax1 (andreax1!~Andreaz@tmo-099-187.customers.d1-online.com) has joined #mythtv | |
[10:20:26] | andreax (andreax!~Andreaz@tmo-101-33.customers.d1-online.com) has quit (Ping timeout: 276 seconds) | |
[10:33:24] | andreax1 (andreax1!~Andreaz@tmo-099-187.customers.d1-online.com) has quit (Read error: Connection reset by peer) | |
[10:45:54] | dblain: | iamlindoro: The content class doesn't have any methods that return custom classes, only Qt types. It is still scriptable. See comment in myth.h for more details. |
[10:50:53] | andreax (andreax!~Andreaz@tmo-099-187.customers.d1-online.com) has joined #mythtv | |
[10:57:18] | mycoDA (mycoDA!~mycoDA@221.121.134.96) has joined #mythtv | |
[10:57:18] | mycoDA (mycoDA!~mycoDA@221.121.134.96) has quit (Changing host) | |
[10:57:18] | mycoDA (mycoDA!~mycoDA@unaffiliated/mycosys) has joined #mythtv | |
[11:20:24] | andreax (andreax!~Andreaz@tmo-099-187.customers.d1-online.com) has quit (Read error: Connection reset by peer) | |
[11:26:59] | andreax (andreax!~Andreaz@tmo-098-178.customers.d1-online.com) has joined #mythtv | |
[11:35:45] | andreax1 (andreax1!~Andreaz@tmo-101-209.customers.d1-online.com) has joined #mythtv | |
[11:36:09] | andreax (andreax!~Andreaz@tmo-098-178.customers.d1-online.com) has quit (Read error: Connection reset by peer) | |
[11:54:08] | davide_ (davide_!~david@host103.16.intrusion.com) has joined #mythtv | |
[11:54:15] | davide_ (davide_!~david@host103.16.intrusion.com) has quit (Changing host) | |
[11:54:15] | davide_ (davide_!~david@mythtv/developer/gigem) has joined #mythtv | |
[12:06:45] | andreax (andreax!~Andreaz@tmo-099-147.customers.d1-online.com) has joined #mythtv | |
[12:10:37] | andreax1 (andreax1!~Andreaz@tmo-101-209.customers.d1-online.com) has quit (Ping timeout: 260 seconds) | |
[12:15:16] | simonckenyon (simonckenyon!~simoncken@195.7.61.12) has joined #mythtv | |
[12:26:35] | andreax (andreax!~Andreaz@tmo-099-147.customers.d1-online.com) has quit (Ping timeout: 252 seconds) | |
[12:34:18] | Dave-road (Dave-road!~dave@cpe-66-66-127-3.rochester.res.rr.com) has quit (Quit: Leaving) | |
[12:34:29] | Dave123 (Dave123!~dave@cpe-66-66-127-3.rochester.res.rr.com) has joined #mythtv | |
[12:45:56] | Jordack (Jordack!~jordack@h69-131-44-221.mdsnwi.tisp.static.tds.net) has joined #mythtv | |
[13:02:53] | aram1 (aram1!~aram@157.166.167.129) has joined #mythtv | |
[13:03:55] | aram1 (aram1!~aram@157.166.167.129) has left #mythtv () | |
[13:04:02] | martin_ (martin_!~quassel@static-88.131.29.2.addr.tdcsong.se) has quit (Remote host closed the connection) | |
[13:13:30] | zombor (zombor!~zombor_@kohana/developer/zombor) has joined #mythtv | |
[13:16:40] | andreax (andreax!~Andreaz@tmo-098-40.customers.d1-online.com) has joined #mythtv | |
[13:22:03] | eharris (eharris!~eharris@99-179-7-82.lightspeed.austtx.sbcglobal.net) has quit (Ping timeout: 260 seconds) | |
[13:23:38] | eharris (eharris!~eharris@99-179-7-82.lightspeed.austtx.sbcglobal.net) has joined #mythtv | |
[13:44:19] | j-rod|afk is now known as j-rod | |
[13:47:31] | cocoa117 (cocoa117!~cocoa117@wk-29-223.guest.rdg.ac.uk) has joined #mythtv | |
[13:54:53] | cocoa117 (cocoa117!~cocoa117@wk-29-223.guest.rdg.ac.uk) has quit (Quit: Leaving) | |
[14:02:29] | dserban (dserban!~dserban@S0106001346beb5f3.ok.shawcable.net) has joined #mythtv | |
[14:03:32] | elmojo: | markk: do we directly modify the video buffers for display purposes such as deinterlacing, scaling, etc? |
[14:19:46] | elmojo: | if that's the case then we should prevent any modification to the buffer until the decoder releases it |
[14:21:33] | markk: | elmojo: any software based filtering will modify the buffer – but that should be the very last thing that happens before display. |
[14:25:54] | elmojo: | markk: I think I know how this should work then |
[14:28:10] | elmojo: | we need the following queues – locked, released, decoded, ready and available |
[14:28:27] | elmojo: | locked will contain the list of frame pointers that are in use by the decoder |
[14:29:07] | elmojo: | released will contain a list of frame pointers that have been released by the decoder by not in the ready queue |
[14:29:36] | elmojo: | decoded will contain a list of frame pointers that have been decoded by the decoder but not in the ready queue |
[14:30:19] | elmojo: | ready will contain a list of frame pointers that have been released AND decoded |
[14:30:51] | elmojo: | and available obviously will be the frame pointers that aren't in use by the decoder or the player |
[14:31:32] | stuarta: | how do the frames transition through the states |
[14:32:39] | elmojo: | locked -> released AND decoded -> ready -> available |
[14:33:07] | stuarta: | i'm guessing filtering fits in between released and decoded? |
[14:33:30] | elmojo: | filtering should only happen when the frame is in the ready queue |
[14:33:47] | stuarta: | okay, i'll go back to listening to the experts :) |
[14:34:15] | markk: | elmojo: sorry – what differentiates released and decoded? |
[14:34:22] | ** stuarta was just about to ask that ** | |
[14:35:42] | elmojo: | markk: released is when the decoder calls release_avf_buffer and decoded is when we run avcodec_decode_video2 |
[14:39:48] | elmojo: | basically a frame can be fully decoded and output by avcodec_decode_video2 but still in use by the decoder |
[14:40:18] | markk: | elmojo: ok – with you now. |
[14:40:32] | elmojo: | our current scheme allows the modification, display and return of the frame with zero regards if it's still in use by the decoder |
[14:41:26] | elmojo: | basically ProcessVideoPacket needs to add the frame to the decoded queue when it gets a picture and then check if any are in the ready queue |
[14:42:06] | elmojo: | and we need logic to build the ready queue by checking the decoded queue (in order) and see if the frame exists in the released queue |
[14:45:08] | Chutt: | or just do a copy if you're futzing with the data |
[14:45:23] | elmojo: | Chutt: was wondering if a copy is too expensive |
[14:45:30] | Chutt: | you won't be able to do that logic as described with some video codecs, as reference frames take a loooong time to go away |
[14:45:32] | elmojo: | it would simplify things dramatically though |
[14:45:42] | elmojo: | good point |
[14:46:26] | elmojo: | would be really clean to have separate decoder buffers and display buffers |
[14:46:36] | Chutt: | it's best to not copy, of course |
[14:46:46] | Chutt: | so if you're not deinterlacing.. |
[14:49:26] | thopiekar (thopiekar!~quassel@p579AD203.dip.t-dialin.net) has joined #mythtv | |
[14:50:48] | elmojo: | Chutt: so do you suggest we just make a copy of the decoded frames when they are ready? |
[14:50:57] | Chutt: | naw |
[14:51:05] | Chutt: | i'd say just do it as part of the modification process |
[14:51:11] | Chutt: | ie |
[14:51:21] | Chutt: | if you have a filter that's going to touch data, copy it as part of that |
[14:51:54] | elmojo: | gotcha |
[14:54:53] | elmojo: | maybe best to have the buffer store the original frame and the modified frame so it's easier to track |
[14:55:17] | stuarta: | is there a technical reason for doing so? |
[14:57:27] | elmojo: | "easier to track" |
[14:59:40] | andreax (andreax!~Andreaz@tmo-098-40.customers.d1-online.com) has quit (Read error: Connection reset by peer) | |
[15:12:36] | abqjp (abqjp!~abqjp@97-119-174-22.albq.qwest.net) has joined #mythtv | |
[15:14:49] | iamlindoro: | dblain: That makes sense, thanks for the explanation |
[15:22:27] | thopiekar (thopiekar!~quassel@p579AD203.dip.t-dialin.net) has quit (Read error: Connection reset by peer) | |
[15:27:51] | thopiekar (thopiekar!~quassel@p579AD203.dip.t-dialin.net) has joined #mythtv | |
[15:41:37] | hobiga (hobiga!~hobiga@173.210.255.195) has quit (Read error: Connection reset by peer) | |
[15:47:58] | hobiga (hobiga!~hobiga@173.210.255.195) has joined #mythtv | |
[15:52:29] | dserban (dserban!~dserban@S0106001346beb5f3.ok.shawcable.net) has quit (Read error: Operation timed out) | |
[15:57:59] | thopiekar (thopiekar!~quassel@p579AD203.dip.t-dialin.net) has quit (Remote host closed the connection) | |
[16:11:02] | hobiga (hobiga!~hobiga@173.210.255.195) has quit (Read error: Connection reset by peer) | |
[16:17:23] | hobiga (hobiga!~hobiga@173.210.255.195) has joined #mythtv | |
[16:35:34] | andreax (andreax!~andreaz@p57B92D44.dip.t-dialin.net) has joined #mythtv | |
[16:38:24] | kormoc is now known as kormoc_afk | |
[16:40:11] | jamesba (jamesba!~jamesba@gateb.kw.bbc.co.uk) has quit (Quit: Leaving) | |
[16:43:39] | Anssi_ (Anssi_!hannulaa@mustatilhi.cs.tut.fi) has joined #mythtv | |
[16:43:39] | Anssi_ (Anssi_!hannulaa@mandriva/developer/anssi) has joined #mythtv | |
[16:43:39] | Anssi_ (Anssi_!hannulaa@mustatilhi.cs.tut.fi) has quit (Changing host) | |
[16:43:48] | Zombie (Zombie!~masterz@adsl-78-71.lex.bluegrass.net) has left #mythtv ("Leaving") | |
[16:44:35] | Anssi (Anssi!hannulaa@mandriva/developer/anssi) has quit (Ping timeout: 276 seconds) | |
[16:53:52] | gigem (gigem!~david@mythtv/developer/gigem) has joined #mythtv | |
[16:57:41] | davide_ (davide_!~david@mythtv/developer/gigem) has quit (Ping timeout: 240 seconds) | |
[17:21:56] | andreax (andreax!~andreaz@p57B92D44.dip.t-dialin.net) has quit (Quit: Leaving.) | |
[17:46:38] | dserban (dserban!~dserban@S0106001346beb5f3.ok.shawcable.net) has joined #mythtv | |
[17:50:50] | j-rod is now known as j-rod|afk | |
[17:54:26] | andreax (andreax!~andreaz@p57B92D44.dip.t-dialin.net) has joined #mythtv | |
[18:08:46] | kormoc_afk is now known as kormoc | |
[18:09:49] | andreax1 (andreax1!~andreaz@p57B944FE.dip.t-dialin.net) has joined #mythtv | |
[18:10:41] | andreax (andreax!~andreaz@p57B92D44.dip.t-dialin.net) has quit (Ping timeout: 240 seconds) | |
[18:13:14] | GreyFoxx: | hrm, my freshly updated backends seem to all be very crashy now :) |
[18:20:31] | natanojl (natanojl!~jonatan@c83-252-237-63.bredband.comhem.se) has joined #mythtv | |
[18:26:55] | knightr (knightr!~knightr@mythtv/developer/knightr) has quit (Read error: Connection reset by peer) | |
[18:27:25] | knightr (knightr!~knightr@mythtv/developer/knightr) has joined #mythtv | |
[18:44:15] | XChatMav (XChatMav!~MaverickT@111.86.233.220.static.exetel.com.au) has quit (Ping timeout: 240 seconds) | |
[18:59:05] | knightr (knightr!~knightr@mythtv/developer/knightr) has quit (Read error: Operation timed out) | |
[18:59:58] | knightr (knightr!~knightr@mythtv/developer/knightr) has joined #mythtv | |
[19:07:07] | knightr (knightr!~knightr@mythtv/developer/knightr) has quit (Ping timeout: 276 seconds) | |
[19:12:55] | knightr (knightr!~knightr@mythtv/developer/knightr) has joined #mythtv | |
[19:23:16] | anykey_ (anykey_!~guedel@46-126-247-133.dynamic.hispeed.ch) has quit (Remote host closed the connection) | |
[19:40:30] | knightr (knightr!~knightr@mythtv/developer/knightr) has quit (Read error: Connection reset by peer) | |
[19:41:01] | knightr (knightr!~knightr@mythtv/developer/knightr) has joined #mythtv | |
[19:42:42] | mosburn (mosburn!~mosburn@67-41-146-194.hlrn.qwest.net) has joined #mythtv | |
[19:48:31] | Jordack (Jordack!~jordack@h69-131-44-221.mdsnwi.tisp.static.tds.net) has quit (Quit: Jeans and a blazer is the mullet of fasion. Party on bottom, business on top.) | |
[19:51:49] | knightr (knightr!~knightr@mythtv/developer/knightr) has quit (Ping timeout: 248 seconds) | |
[19:56:29] | dlblain (dlblain!~dblain@c-76-127-227-175.hsd1.ma.comcast.net) has joined #mythtv | |
[19:56:41] | dlblain (dlblain!~dblain@c-76-127-227-175.hsd1.ma.comcast.net) has quit (Client Quit) | |
[20:02:39] | SteveGoodey (SteveGoodey!~steve@host86-145-235-163.range86-145.btcentralplus.com) has joined #mythtv | |
[20:03:15] | knightr (knightr!~knightr@mythtv/developer/knightr) has joined #mythtv | |
[20:07:29] | natanojl (natanojl!~jonatan@c83-252-237-63.bredband.comhem.se) has quit (Ping timeout: 240 seconds) | |
[20:12:37] | Chutt (Chutt!~ijr@cpe-76-190-194-229.neo.res.rr.com) has quit (Ping timeout: 252 seconds) | |
[20:16:19] | anykey_ (anykey_!~guedel@46-126-247-133.dynamic.hispeed.ch) has joined #mythtv | |
[20:16:42] | SteveGoodey (SteveGoodey!~steve@host86-145-235-163.range86-145.btcentralplus.com) has quit (Read error: Connection reset by peer) | |
[20:17:36] | SteveGoodey (SteveGoodey!~steve@host86-145-235-163.range86-145.btcentralplus.com) has joined #mythtv | |
[20:25:50] | knightr (knightr!~knightr@mythtv/developer/knightr) has quit (Ping timeout: 260 seconds) | |
[20:32:11] | eharris (eharris!~eharris@99-179-7-82.lightspeed.austtx.sbcglobal.net) has quit (Ping timeout: 240 seconds) | |
[20:34:14] | eharris (eharris!~eharris@99-179-7-82.lightspeed.austtx.sbcglobal.net) has joined #mythtv | |
[20:46:04] | zombor (zombor!~zombor_@kohana/developer/zombor) has quit (Remote host closed the connection) | |
[20:52:13] | knightr (knightr!~knightr@mythtv/developer/knightr) has joined #mythtv | |
[21:07:15] | knightr (knightr!~knightr@mythtv/developer/knightr) has quit (Ping timeout: 252 seconds) | |
[21:22:15] | jya (jya!~jyavenard@mythtv/developer/jya) has quit (Quit: jya) | |
[21:45:31] | knightr (knightr!~knightr@mythtv/developer/knightr) has joined #mythtv | |
[21:49:09] | SteveGoodey (SteveGoodey!~steve@host86-145-235-163.range86-145.btcentralplus.com) has quit (Remote host closed the connection) | |
[22:00:11] | davide_ (davide_!~david@mythtv/developer/gigem) has joined #mythtv | |
[22:04:17] | gigem (gigem!~david@mythtv/developer/gigem) has quit (Ping timeout: 258 seconds) | |
[22:11:02] | MaverickTech (MaverickTech!~MaverickT@111.86.233.220.static.exetel.com.au) has joined #mythtv | |
[22:33:13] | dserban (dserban!~dserban@S0106001346beb5f3.ok.shawcable.net) has quit (Ping timeout: 246 seconds) | |
[22:34:12] | elmojo: | markk: I fixed the corruption using software decode – vdpau is another animal |
[22:52:58] | knightr (knightr!~knightr@mythtv/developer/knightr) has quit (Ping timeout: 258 seconds) | |
[22:53:24] | knightr (knightr!~knightr@mythtv/developer/knightr) has joined #mythtv | |
[22:53:58] | clever_ is now known as clever | |
[23:21:15] | dekarl (dekarl!~dekarl@e180143218.adsl.alicedsl.de) has joined #mythtv | |
[23:21:59] | dekarl1 (dekarl1!~dekarl@e180135168.adsl.alicedsl.de) has quit (Ping timeout: 260 seconds) | |
[23:28:44] | markk: | elmojo: do you have some code? |
[23:43:28] | anykey__ (anykey__!~guedel@46-126-247-133.dynamic.hispeed.ch) has joined #mythtv | |
[23:45:11] | anykey_ (anykey_!~guedel@46-126-247-133.dynamic.hispeed.ch) has quit (Ping timeout: 240 seconds) | |
[23:59:06] | zombor (zombor!~zombor_@65.29.235.201) has joined #mythtv | |
[23:59:13] | zombor (zombor!~zombor_@65.29.235.201) has quit (Changing host) | |
[23:59:13] | zombor (zombor!~zombor_@kohana/developer/zombor) has joined #mythtv |
IRC Logs collected by
BeirdoBot.
Please use the above link to report any bugs.