[prev in list] [next in list] [prev in thread] [next in thread] 

List:       helix-datatype-dev
Subject:    [datatype-dev] [RESENDING] CR: Fix for invalid timestamp issue
From:       Deepak Jain <deepakj () real ! com>
Date:       2010-01-28 7:40:34
Message-ID: 4B613CA2.6080401 () real ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Resending for review.

Thanks,
Deepak Jain

Deepak Jain wrote:
> Hi Eric,
>
> Your suggestion is incorporated and attached is the updated diff.
>
> Thanks,
> Deepak Jain
>
>
> Eric Hyche wrote:
>> Deepak,
>>
>> It seems to me that the bug is in velproxy.cpp. If the incoming 
>> packet is an IHXRTPPacket, then the outgoing packet should be an 
>> IHXRTPPacket as well, just with a scaled timestamps. Sounds like 
>> velproxy is making everything into an IHXPacket.
>>
>> Eric
>>
>> On Jan 25, 2010, at 7:16 AM, Deepak Jain wrote:
>>
>>  
>>> Project: Real Player for MID - ARM.
>>>
>>> Synopsis: Fix for invalid timestamp issue while doing FF in Mpeg4 
>>> for LG-MID ARM
>>>
>>> Overview: When we do FF in a Mp4 file, we get the packet from the 
>>> assembler from the function CreateHXCodecPacket().
>>> In mp4vpyld, we are setting the packet time from function 
>>> GetPacketTime() and we use RTP Packet time.
>>> This RTP packet time gets set in CreateHXCodecPacket() function 
>>> while creating the packet.
>>>
>>> Now when we do FF, in file velproxy.cpp, inside function 
>>> ReTimeStampAndSendPacket(), we create a IHXPacket and sets RTP time 
>>> as 0xFFFFFFFF.
>>> Now when this time is received in GetPacketTime() inside 
>>> mp4vpyld.cpp and subsequently this packet time is further provided 
>>> to the Hardware decoder, it do not work correctly.
>>>
>>> This issue is resolved by applying a check in GetPacketTime() function.
>>> If we get RTP time as 0xFFFFFFFF, we set time from the packet time 
>>> instead and set the m_bUsesRTPPackets=FALSE.
>>> Attached is the diff.
>>>
>>> Files Modified:
>>> datatype/mp4/payload/mp4vpyld.cpp
>>>
>>> Image Size and Heap Use impact (Client -Only):
>>> None.
>>>
>>> Platforms and Profiles Affected:
>>> None.
>>>
>>> Distribution Libraries Affected:
>>> None.
>>>
>>> Distribution library impact and planned action:
>>> None.
>>>
>>> Platforms and Profiles Build Verified:
>>> BIF: hxclient_3_4_11_atlas_restricted
>>> Target: player_mid_all_installers
>>> Profile: helix-client-mid-arm
>>>
>>> Branch:
>>> Atlas_3411
>>>
>>> Files Attached:
>>> mp4vpyld.txt
>>>
>>> Thanks,
>>> Deepak Jain
>>> <mp4vpyld.txt><ATT00001..txt>
>>>     
>>
>> Eric Hyche (ehyche@real.com)
>> Principal Engineer
>> RealNetworks, Inc.
>>
>>
>>
>>   
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Datatype-dev mailing list
> Datatype-dev@helixcommunity.org
> http://lists.helixcommunity.org/mailman/listinfo/datatype-dev


[Attachment #5 (text/html)]

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body bgcolor="#ffffff" text="#000000">
Resending for review.<br>
<br>
Thanks,<br>
Deepak Jain<br>
<br>
Deepak Jain wrote:
<blockquote type="cite">Hi Eric,
  <br>
  <br>
Your suggestion is incorporated and attached is the updated diff.
  <br>
  <br>
Thanks,
  <br>
Deepak Jain
  <br>
  <br>
  <br>
Eric Hyche wrote:
  <br>
  <blockquote type="cite">Deepak,
    <br>
    <br>
It seems to me that the bug is in velproxy.cpp. If the incoming packet
is an IHXRTPPacket, then the outgoing packet should be an IHXRTPPacket
as well, just with a scaled timestamps. Sounds like velproxy is making
everything into an IHXPacket.
    <br>
    <br>
Eric
    <br>
    <br>
On Jan 25, 2010, at 7:16 AM, Deepak Jain wrote:
    <br>
    <br>
&nbsp;
    <blockquote type="cite">Project: Real Player for MID - ARM.
      <br>
      <br>
Synopsis: Fix for invalid timestamp issue while doing FF in Mpeg4 for
LG-MID ARM
      <br>
      <br>
Overview: When we do FF in a Mp4 file, we get the packet from the
assembler from the function CreateHXCodecPacket().
      <br>
In mp4vpyld, we are setting the packet time from function
GetPacketTime() and we use RTP Packet time.
      <br>
This RTP packet time gets set in CreateHXCodecPacket() function while
creating the packet.
      <br>
      <br>
Now when we do FF, in file velproxy.cpp, inside function
ReTimeStampAndSendPacket(), we create a IHXPacket and sets RTP time as
0xFFFFFFFF.
      <br>
Now when this time is received in GetPacketTime() inside mp4vpyld.cpp
and subsequently this packet time is further provided to the Hardware
decoder, it do not work correctly.
      <br>
      <br>
This issue is resolved by applying a check in GetPacketTime() function.
      <br>
If we get RTP time as 0xFFFFFFFF, we set time from the packet time
instead and set the m_bUsesRTPPackets=FALSE.
      <br>
Attached is the diff.
      <br>
      <br>
Files Modified:
      <br>
datatype/mp4/payload/mp4vpyld.cpp
      <br>
      <br>
Image Size and Heap Use impact (Client -Only):
      <br>
None.
      <br>
      <br>
Platforms and Profiles Affected:
      <br>
None.
      <br>
      <br>
Distribution Libraries Affected:
      <br>
None.
      <br>
      <br>
Distribution library impact and planned action:
      <br>
None.
      <br>
      <br>
Platforms and Profiles Build Verified:
      <br>
BIF: hxclient_3_4_11_atlas_restricted
      <br>
Target: player_mid_all_installers
      <br>
Profile: helix-client-mid-arm
      <br>
      <br>
Branch:
      <br>
Atlas_3411
      <br>
      <br>
Files Attached:
      <br>
mp4vpyld.txt
      <br>
      <br>
Thanks,
      <br>
Deepak Jain
      <br>
&lt;mp4vpyld.txt&gt;&lt;ATT00001..txt&gt;
      <br>
&nbsp;&nbsp;&nbsp; </blockquote>
    <br>
Eric Hyche (<a class="moz-txt-link-abbreviated" \
href="mailto:ehyche@real.com">ehyche@real.com</a>)  <br>
Principal Engineer
    <br>
RealNetworks, Inc.
    <br>
    <br>
    <br>
    <br>
&nbsp; </blockquote>
  <br>
  <pre wrap=""><pre wrap="">
<hr size="4" width="90%">
_______________________________________________
Datatype-dev mailing list
<a class="moz-txt-link-abbreviated" \
href="mailto:Datatype-dev@helixcommunity.org">Datatype-dev@helixcommunity.org</a> <a \
class="moz-txt-link-freetext" \
href="http://lists.helixcommunity.org/mailman/listinfo/datatype-dev">http://lists.helixcommunity.org/mailman/listinfo/datatype-dev</a>
 </pre></pre>
</blockquote>
<br>
</body>
</html>


["Re: [datatype-dev] CR: Fix for invalid timestamp issue while
	doing	FF in Mpeg4for LG-MID ARM.eml" (message/rfc822)]

This is a MIME-formatted message.  If you see this text it means that your
E-mail software does not support MIME-formatted messages.


Hi Eric,

Your suggestion is incorporated and attached is the updated diff.

Thanks,
Deepak Jain


Eric Hyche wrote:
> Deepak,
> 
> It seems to me that the bug is in velproxy.cpp. If the incoming packet is an \
> IHXRTPPacket, then the outgoing packet should be an IHXRTPPacket as well, just with \
> a scaled timestamps. Sounds like velproxy is making everything into an IHXPacket. 
> Eric
> 
> On Jan 25, 2010, at 7:16 AM, Deepak Jain wrote:
> 
> 
> > Project: Real Player for MID - ARM.
> > 
> > Synopsis: Fix for invalid timestamp issue while doing FF in Mpeg4 for LG-MID ARM
> > 
> > Overview: 
> > When we do FF in a Mp4 file, we get the packet from the assembler from the \
> > function CreateHXCodecPacket(). In mp4vpyld, we are setting the packet time from \
> > function GetPacketTime() and we use RTP Packet time. This RTP packet time gets \
> > set in CreateHXCodecPacket() function while creating the packet. 
> > Now when we do FF, in file velproxy.cpp, inside function \
> > ReTimeStampAndSendPacket(), we create a IHXPacket and sets RTP time as \
> > 0xFFFFFFFF. Now when this time is received in GetPacketTime() inside mp4vpyld.cpp \
> > and subsequently this packet time is further provided to the Hardware decoder, it \
> > do not work correctly. 
> > This issue is resolved by applying a check in GetPacketTime() function.
> > If we get RTP time as 0xFFFFFFFF, we set time from the packet time instead and \
> > set the m_bUsesRTPPackets=FALSE. Attached is the diff.
> > 
> > Files Modified:
> > datatype/mp4/payload/mp4vpyld.cpp
> > 
> > Image Size and Heap Use impact (Client -Only):
> > None.
> > 
> > Platforms and Profiles Affected:
> > None.
> > 
> > Distribution Libraries Affected:
> > None.
> > 
> > Distribution library impact and planned action:
> > None.
> > 
> > Platforms and Profiles Build Verified:
> > BIF: hxclient_3_4_11_atlas_restricted
> > Target: player_mid_all_installers
> > Profile: helix-client-mid-arm
> > 
> > Branch:
> > Atlas_3411
> > 
> > Files Attached:
> > mp4vpyld.txt
> > 
> > Thanks,
> > Deepak Jain
> > <mp4vpyld.txt><ATT00001..txt>
> > 
> 
> Eric Hyche (ehyche@real.com)
> Principal Engineer
> RealNetworks, Inc.
> 
> 
> 
> 


["velproxy.diff" (text/x-patch)]

Index: velproxy.cpp
===================================================================
RCS file: /cvsroot/client/core/velproxy.cpp,v
retrieving revision 1.23
diff -u -r1.23 velproxy.cpp
--- velproxy.cpp	6 Jul 2007 21:58:12 -0000	1.23
+++ velproxy.cpp	27 Jan 2010 06:39:54 -0000
@@ -676,15 +676,42 @@
                 {
                     // Create a new packet
                     IHXPacket* pNewPacket = NULL;
-                    retVal = m_pCommonClassFactory->CreateInstance(CLSID_IHXPacket, \
(void**) &pNewPacket); +                    IHXRTPPacket* pRTPPacket = NULL;
+                    HXBOOL bUseRTPPacket = FALSE;
+
+                    bUseRTPPacket = (pPacket->QueryInterface( \
IID_IHXRTPPacket,(void**) &pRTPPacket) == HXR_OK); +                    if \
(SUCCEEDED(retVal)) +                    {
+                        if (bUseRTPPacket)
+                        {
+                            retVal = \
m_pCommonClassFactory->CreateInstance(CLSID_IHXRTPPacket, +							     (void**) \
&pNewPacket); +                        }
+                        else
+                        {
+                            retVal = \
m_pCommonClassFactory->CreateInstance(CLSID_IHXPacket, +							     (void**) \
&pNewPacket); +                        }
+                    }
                     if (SUCCEEDED(retVal))
                     {
-                        // Set the new packet
-                        retVal = pNewPacket->Set(pBuffer,
-                                                 ulNewTime,
-                                                 usStreamNumber,
-                                                 ucASMFlags,
-                                                 usASMRuleNumber);
+                        if (bUseRTPPacket)
+                        {
+                	    retVal = ((IHXRTPPacket*) pNewPacket)->SetRTP(pBuffer,
+                                      ulNewTime,
+                                      ulNewTime,
+                                      usStreamNumber,
+                                      ucASMFlags,
+                                      usASMRuleNumber);
+                        }
+                        else
+                        {
+                            retVal = ((IHXRTPPacket*) pNewPacket)->Set(pBuffer,
+                                      ulNewTime,
+                                      usStreamNumber,
+                                      ucASMFlags,
+                                      usASMRuleNumber);
+                        }
                         if (SUCCEEDED(retVal))
                         {
                             // Pass the packet on through
@@ -692,6 +719,7 @@
                         }
                     }
                     HX_RELEASE(pNewPacket);
+                    HX_RELEASE(pRTPPacket);					
                 }
                 HX_RELEASE(pBuffer);
             }



_______________________________________________
Datatype-dev mailing list
Datatype-dev@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/datatype-dev


_______________________________________________
Datatype-dev mailing list
Datatype-dev@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/datatype-dev


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic