From mrison at hotmail.com Sun Feb 1 18:08:17 2009 From: mrison at hotmail.com (Mark RISON) Date: Sun, 1 Feb 2009 23:08:17 +0000 Subject: [Mp4-tech] Can non-final entry in stts box be zero? Message-ID: Section 8.15.1 of ISO 14496-12:2005 states that: The time to sample boxes must give non-zero durations for all samples with the possible exception of the last one. Durations in the 'stts' box are strictly positive (non-zero), except for the very last entry, which may be zero. However, a number of MPEG conformance files seem to violate this: mpeg4audio-conformance/compressedMp4/ab*_pcm.mp4 mpeg4audio-conformance/compressedMp4/ab03*.mp4 mpeg4audio-conformance/compressedMp4/sls2[23]*.mp4 mpeg4audio-conformance/compressedMp4/sls6*.mp4 So it seems to me that at least one of section 8.15.1, the conformance files and my understanding must be wrong or at least incomplete. But which? Mark -- CPC/IP - A TCP/IP stack for Amstrad CPCs -- http://www.cepece.info/cpcip/ "Z88 vs CPC? Christ. How did we miss that platform war?" -- http://www.ntk.net/index.cgi?b=02000-01-28&l=111#l _________________________________________________________________ Windows Live Messenger just got better .Video display pics, contact updates & more. http://www.download.live.com/messenger From mrison at hotmail.com Sun Feb 1 18:10:31 2009 From: mrison at hotmail.com (Mark RISON) Date: Sun, 1 Feb 2009 23:10:31 +0000 Subject: [Mp4-tech] Missing OCR_ES_Id? Message-ID: Section 8.6.5.1 of ISO 14496-1 specifies that if the OCRstreamFlag is set in an ES_Descriptor then the DecoderConfigDescriptor is immediately preceded by a 16-bit OCR_ES_Id. However, I can't seem to make sense of the MPEG conformance files with the OCRstreamFlag set -- namely: mpeg4audio-conformance/compressedMp4/tts*.mp4 -- unless I assume the streamPriority is immediately followed by the decConfigDescr, without an intervening OCR_ES_Id. Am I missing something? Mark -- CPC/IP - A TCP/IP stack for Amstrad CPCs -- http://www.cepece.info/cpcip/ "Z88 vs CPC? Christ. How did we miss that platform war?" -- http://www.ntk.net/index.cgi?b=02000-01-28&l=111#l _________________________________________________________________ Check out the new and improved services from Windows Live. Learn more! http://clk.atdmt.com/UKM/go/132630768/direct/01/ From singer at apple.com Mon Feb 2 03:25:14 2009 From: singer at apple.com (David Singer) Date: Mon, 2 Feb 2009 09:25:14 +0100 Subject: [Mp4-tech] Can non-final entry in stts box be zero? In-Reply-To: References: Message-ID: At 23:08 +0000 1/02/09, Mark RISON wrote: >Section 8.15.1 of ISO 14496-12:2005 states that: > > The time to sample boxes must give non-zero durations for all > samples with the possible exception of the last one. Durations in > the 'stts' box are strictly positive (non-zero), except for the > very last entry, which may be zero. > >However, a number of MPEG conformance files seem to violate this: > > mpeg4audio-conformance/compressedMp4/ab*_pcm.mp4 > mpeg4audio-conformance/compressedMp4/ab03*.mp4 > mpeg4audio-conformance/compressedMp4/sls2[23]*.mp4 > mpeg4audio-conformance/compressedMp4/sls6*.mp4 > >So it seems to me that at least one of section 8.15.1, the conformance >files and my understanding must be wrong or at least incomplete. But >which? Sounds like an error in conformance files to me. We'll check. Thanks! > >Mark > >-- >CPC/IP - A TCP/IP stack for Amstrad CPCs >-- http://www.cepece.info/cpcip/ >"Z88 vs CPC? Christ. How did we miss that platform war?" >-- http://www.ntk.net/index.cgi?b=02000-01-28&l=111#l > > >_________________________________________________________________ >Windows Live Messenger just got better .Video display pics, contact >updates & more. >http://www.download.live.com/messenger >_______________________________________________ >NOTE: Please use clear subject lines for your posts. Include [audio, >[video], [systems], [general] or another apppropriate identifier to >indicate the type of question you have. > >Note: Conduct on the mailing list is subject to the Antitrust >guidelines found at >http://www.mpegif.org/public/documents/vault/mp-out-30042-Antitrust.php -- David Singer Multimedia Standards, Apple Inc. From video.codec.help at gmail.com Mon Feb 2 08:00:56 2009 From: video.codec.help at gmail.com (J. Miles) Date: Mon, 2 Feb 2009 14:00:56 +0100 Subject: [Mp4-tech] [MP4 container] License issue with MP4 container format? In-Reply-To: <14f06c5d0901150434y76fb9873j7daf38c18be5db16@mail.gmail.com> References: <14f06c5d0901150434y76fb9873j7daf38c18be5db16@mail.gmail.com> Message-ID: <14f06c5d0902020500j39b58eb5ia29d51a4a25243b2@mail.gmail.com> Hello everyone, We are looking into supporting the MP4 container (file) format as specified in MPEG-4 Part 14 (formally ISO/IEC 14496-14). This specification is an extension of MPEG-4 Part 12 on the ISO base file format, which again builds upon the principles of MPEG-4 Part 1 (Systems). Both Part 12 and Part 14 contain patent claims, as does Part 1. We are aware of a license provided by MPEG-LA for MPEG-4 Part 1 Systems, although that has been "closed down" according to their homepage. Our question is thus: - Does MP4 usage require licensing? - If so, who provides such a license? - And do we also need to license Part 1? (and then who provides that, if not MPEG-LA?) - Is there any difference between reading/accessing an MP4 file and writing/creating MP4 files? Any help and comments will be appreciated. Thanks. - Jay (Resend after list unstuck) -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090202/bf489204/attachment.html From Shevach.Riabtsev at zoran.com Mon Feb 2 09:19:23 2009 From: Shevach.Riabtsev at zoran.com (Shevach Riabtsev) Date: Mon, 2 Feb 2009 16:19:23 +0200 Subject: [Mp4-tech] [Video][H.264] On pic_timing SEI message In-Reply-To: <91C4B16D6D58C541BF2F841D27F82536F88D85@zmlex.zml.zoran.com> References: <91C4B16D6D58C541BF2F841D27F82536F88CBA@zmlex.zml.zoran.com><91C4B16D6D58C541BF2F841D27F82536F88CC6@zmlex.zml.zoran.com><91C4B16D6D58C541BF2F841D27F82536F88CCE@zmlex.zml.zoran.com><244oh4lk912k9tocf4q1vct0bqt2a1fd6v@4ax.com><91C4B16D6D58C541BF2F841D27F82536F88CCF@zmlex.zml.zoran.com> <2BAAC5E4AF2518459F0AB5D92794204701B8850B@bur-exch-01.dolby.net> <91C4B16D6D58C541BF2F841D27F82536F88CD6@zmlex.zml.zoran.com> <91C4B16D6D58C541BF2F841D27F82536F88CE1@zmlex.zml.zoran.com> <91C4B16D6D58C541BF2F841D27F82536F88D29@zmlex.zml.zoran.com> <91C4B16D6D58C541BF2F841D27F82536F88D6D@zmlex.zml.zoran.com> <91C4B16D6D58C541BF2F841D27F82536F88D7E@zmlex.zml.zoran.com> <91C4B16D6D58C541BF2F841D27F82536F88D7F@zmlex.zml.zoran.com> <91C4B16D6D58C541BF2F841D27F82536F88D85@zmlex.zml.zoran.com> Message-ID: <91C4B16D6D58C541BF2F841D27F82536F88DDC@zmlex.zml.zoran.com> Dear experts I engaged in controversy with some engineers about pic_timing SEI message. In order to correctly decode pic_timing SEI message a decoder should know pic_struct_present_flag syntax element which in turn is signaled in the sequence header (VUI section). But how can the decoder know which seq_parameter_set_id is active? Indeed the active seq_parameter_set_id is specified either in buffering_period SEI message or in slice header. I suppose that if pic_timing SEI message is not preceded by any buffering_period SEI message then seq_parameter_set_id of the previous picture is applied for decoding. I also suppose that at the start of sequence pic_timing shall be preceded by the buffering_period SEI message. Am I right? Regards Shevach Riabtsev Zoran, Israel -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090202/55c2f9d3/attachment.html From jc-work at uphall.net Mon Feb 2 09:36:35 2009 From: jc-work at uphall.net (John Cox) Date: Mon, 02 Feb 2009 14:36:35 +0000 Subject: [Mp4-tech] [Video][H.264] On pic_timing SEI message In-Reply-To: <91C4B16D6D58C541BF2F841D27F82536F88DDC@zmlex.zml.zoran.com> References: <91C4B16D6D58C541BF2F841D27F82536F88CE1@zmlex.zml.zoran.com> <91C4B16D6D58C541BF2F841D27F82536F88D29@zmlex.zml.zoran.com> <91C4B16D6D58C541BF2F841D27F82536F88D6D@zmlex.zml.zoran.com> <91C4B16D6D58C541BF2F841D27F82536F88D7E@zmlex.zml.zoran.com> <91C4B16D6D58C541BF2F841D27F82536F88D7F@zmlex.zml.zoran.com> <91C4B16D6D58C541BF2F841D27F82536F88D85@zmlex.zml.zoran.com> <91C4B16D6D58C541BF2F841D27F82536F88DDC@zmlex.zml.zoran.com> Message-ID: Hi Sadly the correct answer here is that you have to delay the parse of pic_timing until you have had a slice_header or buffering_period SEI. I had this argument several years ago... John Cox > >Dear experts > >I engaged in controversy with some engineers about pic_timing SEI >message. > >In order to correctly decode pic_timing SEI message a decoder should >know pic_struct_present_flag syntax element which in turn is signaled in >the sequence header (VUI section). >But how can the decoder know which seq_parameter_set_id is active? >Indeed the active seq_parameter_set_id is specified either in >buffering_period SEI message or in slice header. > >I suppose that if pic_timing SEI message is not preceded by any >buffering_period SEI message then seq_parameter_set_id of the previous >picture is applied for decoding. >I also suppose that at the start of sequence pic_timing shall be >preceded by the buffering_period SEI message. > >Am I right? > >Regards > >Shevach Riabtsev >Zoran, Israel From Shevach.Riabtsev at zoran.com Mon Feb 2 09:44:19 2009 From: Shevach.Riabtsev at zoran.com (Shevach Riabtsev) Date: Mon, 2 Feb 2009 16:44:19 +0200 Subject: [Mp4-tech] [Video][H.264] On pic_timing SEI message In-Reply-To: References: <91C4B16D6D58C541BF2F841D27F82536F88DDC@zmlex.zml.zoran.com> Message-ID: <91C4B16D6D58C541BF2F841D27F82536F88DDE@zmlex.zml.zoran.com> John So, it is expected that a real-time decoder should hold pic_timing SEI message until slice header. This is a nightmare to implement it in real-time decoder. Regards -----Original Message----- From: John Cox [mailto:jc-work at uphall.net] Sent: Monday, February 02, 2009 4:37 PM To: Shevach Riabtsev Cc: mp4-tech at lists.mpegif.org Subject: Re: [Mp4-tech] [Video][H.264] On pic_timing SEI message Hi Sadly the correct answer here is that you have to delay the parse of pic_timing until you have had a slice_header or buffering_period SEI. I had this argument several years ago... John Cox > >Dear experts > >I engaged in controversy with some engineers about pic_timing SEI >message. > >In order to correctly decode pic_timing SEI message a decoder should >know pic_struct_present_flag syntax element which in turn is signaled in >the sequence header (VUI section). >But how can the decoder know which seq_parameter_set_id is active? >Indeed the active seq_parameter_set_id is specified either in >buffering_period SEI message or in slice header. > >I suppose that if pic_timing SEI message is not preceded by any >buffering_period SEI message then seq_parameter_set_id of the previous >picture is applied for decoding. >I also suppose that at the start of sequence pic_timing shall be >preceded by the buffering_period SEI message. > >Am I right? > >Regards > >Shevach Riabtsev >Zoran, Israel From jc-work at uphall.net Mon Feb 2 09:58:17 2009 From: jc-work at uphall.net (John Cox) Date: Mon, 02 Feb 2009 14:58:17 +0000 Subject: [Mp4-tech] [Video][H.264] On pic_timing SEI message In-Reply-To: <91C4B16D6D58C541BF2F841D27F82536F88DDE@zmlex.zml.zoran.com> References: <91C4B16D6D58C541BF2F841D27F82536F88DDC@zmlex.zml.zoran.com> <91C4B16D6D58C541BF2F841D27F82536F88DDE@zmlex.zml.zoran.com> Message-ID: Hi >John > >So, it is expected that a real-time decoder should hold pic_timing SEI >message until slice header. > >This is a nightmare to implement it in real-time decoder. That is my understanding, and yes it is dull, but the max length of the coded pic_timing bitstream is quite short so its not hard to store. Compared to some of the other challenges in an H264 decoder this is merely an annoyance. (And yes I have written the code to do this for a real time decoder.) John Cox >Regards > >-----Original Message----- >From: John Cox [mailto:jc-work at uphall.net] >Sent: Monday, February 02, 2009 4:37 PM >To: Shevach Riabtsev >Cc: mp4-tech at lists.mpegif.org >Subject: Re: [Mp4-tech] [Video][H.264] On pic_timing SEI message > >Hi > >Sadly the correct answer here is that you have to delay the parse of >pic_timing >until you have had a slice_header or buffering_period SEI. I had this >argument >several years ago... > >John Cox > > >> >>Dear experts >> >>I engaged in controversy with some engineers about pic_timing SEI >>message. >> >>In order to correctly decode pic_timing SEI message a decoder should >>know pic_struct_present_flag syntax element which in turn is signaled >in >>the sequence header (VUI section). >>But how can the decoder know which seq_parameter_set_id is active? >>Indeed the active seq_parameter_set_id is specified either in >>buffering_period SEI message or in slice header. >> >>I suppose that if pic_timing SEI message is not preceded by any >>buffering_period SEI message then seq_parameter_set_id of the previous >>picture is applied for decoding. >>I also suppose that at the start of sequence pic_timing shall be >>preceded by the buffering_period SEI message. >> >>Am I right? >> >>Regards >> >>Shevach Riabtsev >>Zoran, Israel From cyril.concolato at enst.fr Mon Feb 2 05:43:28 2009 From: cyril.concolato at enst.fr (Cyril Concolato) Date: Mon, 02 Feb 2009 11:43:28 +0100 Subject: [Mp4-tech] Missing OCR_ES_Id? In-Reply-To: References: Message-ID: <4986CE50.7020102@enst.fr> Hi Mark, Mark RISON a ?crit : > Section 8.6.5.1 of ISO 14496-1 specifies that if the OCRstreamFlag is > set in an ES_Descriptor then the DecoderConfigDescriptor is > immediately preceded by a 16-bit OCR_ES_Id. This is correct. Additionally, ISO/IEC 14496-14 (MP4) indicates in section 3.1.2 "Elementary Stream Descriptors": "OCRStreamFlag ? set to false in the file." > However, I can't seem to make sense of the MPEG conformance files with > the OCRstreamFlag set -- namely: > > mpeg4audio-conformance/compressedMp4/tts*.mp4 The file is probably incorrect. Cyril > > -- unless I assume the streamPriority is immediately followed by the > decConfigDescr, without an intervening OCR_ES_Id. Am I missing > something? > > Mark > -- Cyril Concolato Ma?tre de Conf?rences/Associate Professor Groupe Mutimedia/Multimedia Group D?partement Traitement du Signal et Images /Dept. Signal and Image Processing Ecole Nationale Sup?rieure des T?l?communications 46 rue Barrault 75 013 Paris, France http://tsi.enst.fr/~concolat From video.codec.help at gmail.com Wed Feb 4 04:51:00 2009 From: video.codec.help at gmail.com (J. Miles) Date: Wed, 4 Feb 2009 10:51:00 +0100 Subject: [Mp4-tech] [Video][H.264] On pic_timing SEI message In-Reply-To: References: <91C4B16D6D58C541BF2F841D27F82536F88DDC@zmlex.zml.zoran.com> <91C4B16D6D58C541BF2F841D27F82536F88DDE@zmlex.zml.zoran.com> Message-ID: <14f06c5d0902040151x62a00fbaoce4158eec667b04e@mail.gmail.com> Hi, I actually was not completely aware of this so now I am. Let me add some comments that came to mind while reading your conversation on this topic: Strictly speaking (a bit of nit-picking) the slice header itself does not directly activate a SPS (Sequence Parameter Set) but it is done indirectly as it references a PPS (Picture Parameter Set) that then activates its associated SPS. One and only one SPS can be active during a video sequence. This means that the SPS is activated by the IDR access-unit. It is thus only for the IDR access-unit the problem of delaying is really relevant and only if no SEI buffering period NAL is in the IDR access-unit (because then it must precede the pic_timing SEI NAL unit for a compliant stream). For all non-IDR access-units, the currently active SPS (being the one activated by the IDR for the entire sequence) could be assumed (for a compliant stream). This is possibly a moot point, as it is probably more efficient in your implementation to make a general solution for all access-units, and then there is also the problem of detecting whether an access-unit is IDR or not, which in general is first known when reaching the first slice of the primary coded picture... Regards, Jay On Mon, Feb 2, 2009 at 3:58 PM, John Cox wrote: > Hi > > >John > > > >So, it is expected that a real-time decoder should hold pic_timing SEI > >message until slice header. > > > >This is a nightmare to implement it in real-time decoder. > > That is my understanding, and yes it is dull, but the max length of the > coded > pic_timing bitstream is quite short so its not hard to store. Compared to > some > of the other challenges in an H264 decoder this is merely an annoyance. > (And > yes I have written the code to do this for a real time decoder.) > > John Cox > > > >Regards > > > >-----Original Message----- > >From: John Cox [mailto:jc-work at uphall.net] > >Sent: Monday, February 02, 2009 4:37 PM > >To: Shevach Riabtsev > >Cc: mp4-tech at lists.mpegif.org > >Subject: Re: [Mp4-tech] [Video][H.264] On pic_timing SEI message > > > >Hi > > > >Sadly the correct answer here is that you have to delay the parse of > >pic_timing > >until you have had a slice_header or buffering_period SEI. I had this > >argument > >several years ago... > > > >John Cox > > > > > >> > >>Dear experts > >> > >>I engaged in controversy with some engineers about pic_timing SEI > >>message. > >> > >>In order to correctly decode pic_timing SEI message a decoder should > >>know pic_struct_present_flag syntax element which in turn is signaled > >in > >>the sequence header (VUI section). > >>But how can the decoder know which seq_parameter_set_id is active? > >>Indeed the active seq_parameter_set_id is specified either in > >>buffering_period SEI message or in slice header. > >> > >>I suppose that if pic_timing SEI message is not preceded by any > >>buffering_period SEI message then seq_parameter_set_id of the previous > >>picture is applied for decoding. > >>I also suppose that at the start of sequence pic_timing shall be > >>preceded by the buffering_period SEI message. > >> > >>Am I right? > >> > >>Regards > >> > >>Shevach Riabtsev > >>Zoran, Israel > > _______________________________________________ > NOTE: Please use clear subject lines for your posts. Include [audio, > [video], [systems], [general] or another apppropriate identifier to indicate > the type of question you have. > > Note: Conduct on the mailing list is subject to the Antitrust guidelines > found at > http://www.mpegif.org/public/documents/vault/mp-out-30042-Antitrust.php > -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090204/353100a4/attachment.html From Shevach.Riabtsev at zoran.com Wed Feb 4 07:02:57 2009 From: Shevach.Riabtsev at zoran.com (Shevach Riabtsev) Date: Wed, 4 Feb 2009 14:02:57 +0200 Subject: [Mp4-tech] [Video][H.264] On pic_timing SEI message In-Reply-To: <14f06c5d0902040151x62a00fbaoce4158eec667b04e@mail.gmail.com> References: <91C4B16D6D58C541BF2F841D27F82536F88DDC@zmlex.zml.zoran.com> <91C4B16D6D58C541BF2F841D27F82536F88DDE@zmlex.zml.zoran.com> <14f06c5d0902040151x62a00fbaoce4158eec667b04e@mail.gmail.com> Message-ID: <91C4B16D6D58C541BF2F841D27F82536F88DE9@zmlex.zml.zoran.com> J. Miles I completely agree with your reasoning. Actually the section 7.4.1.2.1 "Order of sequence and picture parameter set RBSPs and their activation" explains the same but with more sophisticated language. There is a general point. Is H.264 decoding instantaneous (in the sense of instantaneous codes)? The answer is NO. I don't understand a reason why H.264 designers deviated from the general trend (e.g. accepted in MPEG2) and specified H.264 decoding as non-instantaneous. Regards ________________________________ From: J. Miles [mailto:video.codec.help at gmail.com] Sent: Wednesday, February 04, 2009 11:51 AM To: Shevach Riabtsev Cc: John Cox; mp4-tech at lists.mpegif.org Subject: Re: [Mp4-tech] [Video][H.264] On pic_timing SEI message Hi, I actually was not completely aware of this so now I am. Let me add some comments that came to mind while reading your conversation on this topic: Strictly speaking (a bit of nit-picking) the slice header itself does not directly activate a SPS (Sequence Parameter Set) but it is done indirectly as it references a PPS (Picture Parameter Set) that then activates its associated SPS. One and only one SPS can be active during a video sequence. This means that the SPS is activated by the IDR access-unit. It is thus only for the IDR access-unit the problem of delaying is really relevant and only if no SEI buffering period NAL is in the IDR access-unit (because then it must precede the pic_timing SEI NAL unit for a compliant stream). For all non-IDR access-units, the currently active SPS (being the one activated by the IDR for the entire sequence) could be assumed (for a compliant stream). This is possibly a moot point, as it is probably more efficient in your implementation to make a general solution for all access-units, and then there is also the problem of detecting whether an access-unit is IDR or not, which in general is first known when reaching the first slice of the primary coded picture... Regards, Jay On Mon, Feb 2, 2009 at 3:58 PM, John Cox wrote: Hi >John > >So, it is expected that a real-time decoder should hold pic_timing SEI >message until slice header. > >This is a nightmare to implement it in real-time decoder. That is my understanding, and yes it is dull, but the max length of the coded pic_timing bitstream is quite short so its not hard to store. Compared to some of the other challenges in an H264 decoder this is merely an annoyance. (And yes I have written the code to do this for a real time decoder.) John Cox >Regards > >-----Original Message----- >From: John Cox [mailto:jc-work at uphall.net] >Sent: Monday, February 02, 2009 4:37 PM >To: Shevach Riabtsev >Cc: mp4-tech at lists.mpegif.org >Subject: Re: [Mp4-tech] [Video][H.264] On pic_timing SEI message > >Hi > >Sadly the correct answer here is that you have to delay the parse of >pic_timing >until you have had a slice_header or buffering_period SEI. I had this >argument >several years ago... > >John Cox > > >> >>Dear experts >> >>I engaged in controversy with some engineers about pic_timing SEI >>message. >> >>In order to correctly decode pic_timing SEI message a decoder should >>know pic_struct_present_flag syntax element which in turn is signaled >in >>the sequence header (VUI section). >>But how can the decoder know which seq_parameter_set_id is active? >>Indeed the active seq_parameter_set_id is specified either in >>buffering_period SEI message or in slice header. >> >>I suppose that if pic_timing SEI message is not preceded by any >>buffering_period SEI message then seq_parameter_set_id of the previous >>picture is applied for decoding. >>I also suppose that at the start of sequence pic_timing shall be >>preceded by the buffering_period SEI message. >> >>Am I right? >> >>Regards >> >>Shevach Riabtsev >>Zoran, Israel _______________________________________________ NOTE: Please use clear subject lines for your posts. Include [audio, [video], [systems], [general] or another apppropriate identifier to indicate the type of question you have. Note: Conduct on the mailing list is subject to the Antitrust guidelines found at http://www.mpegif.org/public/documents/vault/mp-out-30042-Antitrust.php -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090204/ef36841f/attachment.html From ssingh179 at gmail.com Wed Feb 4 05:40:24 2009 From: ssingh179 at gmail.com (Shailendra Singh) Date: Wed, 4 Feb 2009 10:40:24 +0000 Subject: [Mp4-tech] Key frames vs I frames, QuickTime Pro and RTP Message-ID: Hi All, While some people use the terms "I frame" and "key frame" interchangeably, there are other who insist these two terms are not the same. The latter viewpoint says that a key frame provides a random access point in a stream, which in turn means that a key frame must be independently decodable. Thus every I frame is a key frame, while a key frame may or may not be an I frame. My questions are: (a) If a P frame is a key frame, does it follow that *every* macroblock of this P frame MUST necessarily be *intra* coded? (b) I created a (hinted) 3GP file with QuickTime Pro with a H.263+ video track. Only the first frame is coded as an I frame, the remaining frames are coded as P. The Sync Sample Box shows that there are more than one sync samples, i.e. there are P frames present which are key frames. Dave (Singer) in an earlier mail (h**p:// lists.mpegif.org/pipermail/mp4-tech/2004-August/003997.html ) said that "?.valid 'sync' points in the stream, for various reasons, they are coded using P-frame syntax?". I wish Dave had clarified what these 'various reasons' are which encourage this approach, since in all the other 3GP files (NOT produced by QuickTime) which I could find, the number of I frames and number of key frames was identical. My real problem with this approach is, that when such a file is streamed over RTP, the relevant RFC (RFC 4629) does not specify a mechanism for marking a frame as a key frame, so if a frame is lost, in part or full, and the remote end decides to look out for the next 'sync point', it HAS to look out for the next I frame, which of course, will never come. Meanwhile, the only option left for the remote end is to discover if every received frame after the lost frame is a key frame is the hard way. All this can be avoided if (1) the RFC provides a method of flagging a frame as a key frame , or (2) QuickTime, like a lot of other tools, uses only I frame as key frames. Am I missing something here? Regards, Shailendra -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090204/1773580d/attachment-0001.html From ssingh179 at gmail.com Wed Feb 4 10:00:53 2009 From: ssingh179 at gmail.com (Shailendra Singh) Date: Wed, 4 Feb 2009 15:00:53 +0000 Subject: [Mp4-tech] Key frames vs I frames, QuickTime Pro and RTP (a correction) Message-ID: A correction - Dave's original mail, from which I have quoted below, is at http://lists.mpegif.org/pipermail/mp4-tech/2004-August/003981.html . Regards, Shailendra On Wed, Feb 4, 2009 at 10:40 AM, Shailendra Singh wrote: > > Hi All, > > While some people use the terms "I frame" and "key frame" interchangeably, > there are other who insist these two terms are not the same. The latter > viewpoint says that a key frame provides a random access point in a stream, > which in turn means that a key frame must be independently decodable. Thus > every I frame is a key frame, while a key frame may or may not be an I > frame. > > My questions are: > > (a) If a P frame is a key frame, does it follow that *every* macroblock > of this P frame MUST necessarily be *intra* coded? > > (b) I created a (hinted) 3GP file with QuickTime Pro with a H.263+ video > track. Only the first frame is coded as an I frame, the remaining frames are > coded as P. The Sync Sample Box shows that there are more than one sync > samples, i.e. there are P frames present which are key frames. Dave (Singer) > in an earlier mail (h**p:// > lists.mpegif.org/pipermail/mp4-tech/2004-August/003997.html ) said that > "?.valid 'sync' points in the stream, for various reasons, they are coded > using P-frame syntax?". > I wish Dave had clarified what these 'various reasons' are which > encourage this approach, since in all the other 3GP files (NOT produced by > QuickTime) which I could find, the number of I frames and number of key > frames was identical. > My real problem with this approach is, that when such a file is > streamed over RTP, the relevant RFC (RFC 4629) does not specify a mechanism > for marking a frame as a key frame, so if a frame is lost, in part or full, > and the remote end decides to look out for the next 'sync point', it HAS to > look out for the next I frame, which of course, will never come. Meanwhile, > the only option left for the remote end is to discover if every received > frame after the lost frame is a key frame is the hard way. All this can be > avoided if (1) the RFC provides a method of flagging a frame as a key frame > , or (2) QuickTime, like a lot of other tools, uses only I frame as key > frames. > Am I missing something here? > > Regards, > Shailendra > > -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090204/c373483c/attachment.html From engrsajidanwar at yahoo.com Thu Feb 5 03:51:16 2009 From: engrsajidanwar at yahoo.com (Sajid Anwar SoEE SNU) Date: Thu, 5 Feb 2009 00:51:16 -0800 (PST) Subject: [Mp4-tech] [Mpeg4SP]Conformance Testing Message-ID: <170863.53951.qm@web34804.mail.mud.yahoo.com> Dear Experts I have some questions regarding MPEG-4 SP Video Decoder conformance testing; 1- There are three different types of bitstream files. cmp, bits, m4v. what is the difference between these three different types of files. 2- The link http://www.chiariglione.org/mpeg/technologies/mp04-conf/index.htm provides standard bitstreams but does not provide any document for conformance testing. Is their any ? if so can you specify the link or send the document ? 3- What are the limit on quality in term of PSNR ? Thanks for your great time and help. Kind Regards, Sajid Anwar -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090205/b22241d0/attachment.html From sprasad14 at gmail.com Thu Feb 5 09:45:41 2009 From: sprasad14 at gmail.com (prasad s) Date: Thu, 5 Feb 2009 20:15:41 +0530 Subject: [Mp4-tech] [Mp4-Tech]Regarding error in H.264 Standard document. Message-ID: <55bb145e0902050645wc62ba64g8d5e7fc0e7ab87c8@mail.gmail.com> Dear Experts, I am referring to the document ITU-T Rec. H.264 | ISO/IEC 14496-10 version 8 (approved by ITU-T on 22 November 2007). Please examine the two cases below and answer my queries. case 1: In section 7.3.5.3.2 (Residual block CAVLC syntax), it is shown that the syntax element "total_zeros" is parsed when TotalCoeff(coeff_token) < endIdx - startIdx + 1. But when refering to section 9.2.3 (Parsing process for run information), it is mentioned that "total_zeros" is decoded when TotalCoeff(coeff_token) is less than maxNumCoeff. case 2: In the same section 9.2.3, the VLC table to be used for decoding "total_zeros" is selected based on the value of maxNumCoeff. 1. In case of SVC decoding, is it possible to have the value of startIdx and endIdx anything between 0 and 15 provided endIdx > startIdx? 2. If the answer to previous question is yes, then the situation mentioned in case 1 is a serious error, right? Because I think in the standard, the maxNumCoeff is not made equal to endIdx - startIdx + 1. 3. In SVC, is the table selection mention in case 2, still based on the value of maxNumCoeff? Thanks in advance for the help provided. regards, Prasad. From nasser.al-sulaihim at intel.com Thu Feb 5 17:17:44 2009 From: nasser.al-sulaihim at intel.com (Al-sulaihim, Nasser) Date: Thu, 5 Feb 2009 15:17:44 -0700 Subject: [Mp4-tech] Bento4 questions from a video/audio novice Message-ID: Hello List, I'm dabbling for the first time in this arena and I have 2 questions: 1. Is Bento4 the right SDK to use for reading/writing MP4 files in C++? If not, is there something else available or better? 1. Using that SDK, I was trying to read an .mp4 file and then just write it out to another file using their instructions, but the file I get is pretty much empty (20KB) whereas the original is ~80KB. Does anyone have sample code to do this? I used their AAC2Mp4 and Mp42AAC code as examples, but to no avail. Thanks very much for your help! Nasser -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090205/36e4f509/attachment.html From vcpawate at gmail.com Fri Feb 6 04:57:47 2009 From: vcpawate at gmail.com (Vinayaka Pawate) Date: Fri, 6 Feb 2009 15:27:47 +0530 Subject: [Mp4-tech] h.264 stream analyzer In-Reply-To: References: Message-ID: Hi experts, Why does blocky image occur in H.264 codec,and also in some image the bottom of the image will be flickering(on and off) Awaiting for your reply, Regards Vinayaka On Tue, Nov 27, 2007 at 8:00 PM, Krzysztof Szczerba < krzysztof.szczerba at gmail.com> wrote: > Dear All, > > I am writing a software h.254 decoder. For debugging purposes I would like > to use a tool that would allow me to compare the data I read from the > stream with what I shoud have read. I have some problem with > CAVLC, so something that would tell me syntax elements values I should have read would be a great help for me. Currently I have an > > Elecard Stream Eye demo, but it does not provide low level information, such as residuals I should get. > I googled a lot, but the effect was only the Elecard tool. > > Thanks for any advice. > Christopher > > _______________________________________________ > NOTE: Please use clear subject lines for your posts. Include [audio, > [video], [systems], [general] or another apppropriate identifier to indicate > the type of question you have. > > Note: Conduct on the mailing list is subject to the Antitrust guidelines > found at > http://www.mpegif.org/public/documents/vault/mp-out-30042-Antitrust.php > -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090206/a746d6a5/attachment.html From nasser.al-sulaihim at intel.com Fri Feb 6 11:44:17 2009 From: nasser.al-sulaihim at intel.com (Al-sulaihim, Nasser) Date: Fri, 6 Feb 2009 09:44:17 -0700 Subject: [Mp4-tech] Bento4 questions from a video/audio novice In-Reply-To: References: Message-ID: Hi Gilles, Thanks for responding! I wasn't sure how active this list was. I'm using a Bento4 package that I got from sourceforge, version 0.9.8-189. I'm sorry I wasn't clearer regarding what I'm doing. I'm writing my own code to use the API. I thought it would be as simple as doing the following, but what comes out is not the same as what goes in. // create the input stream AP4_ByteStream* input = new AP4_FileByteStream(*args++, AP4_FileByteStream::STREAM_MODE_READ); // create the output stream AP4_ByteStream* output = new AP4_FileByteStream(*args++, AP4_FileByteStream::STREAM_MODE_WRITE); // open the file AP4_File* input_file = new AP4_File(*input); // get the movie AP4_SampleDescription* sample_description; AP4_Track* audio_track; AP4_Movie* movie = input_file->GetMovie(); // create a multimedia file AP4_File* file = new AP4_File(movie); // set the file type AP4_UI32 compatible_brands[2] = { AP4_FILE_BRAND_ISOM, AP4_FILE_BRAND_MP42 }; file->SetFileType(AP4_FILE_BRAND_M4A_, 0, compatible_brands, 2); // create a writer to write the file AP4_FileWriter* writer = new AP4_FileWriter(*file); // write the file to the output writer->Write(*output); Maybe I misunderstood how it all works. I appreciate your help very much! Thanks, Nasser ________________________________ From: Gilles Boccon-Gibod [mailto:bok at bok.net] Sent: Friday, February 06, 2009 9:01 AM To: Al-sulaihim, Nasser Cc: mp4-tech at lists.mpegif.org Subject: Re: [Mp4-tech] Bento4 questions from a video/audio novice Hi Nasser, Which version of the Bento4 SDK are you using? I would recommend using the most recent version from the SVN repository (located at https://zebulon.bok.net/svn/Bento4/trunk ). When you say you're reading one file and writing to another, are you doing this with one of the example apps (like mp4edit, mp4tag, mp4encrypt, etc...) or are you doing this by writing yourself a program that calls the APIs? This type of function can be done in many ways depending on what you want to achieve. Give me some details, I can help you out with this. Regards, -- Gilles On Feb 5, 2009, at 2:17 PM, Al-sulaihim, Nasser wrote: Hello List, I'm dabbling for the first time in this arena and I have 2 questions: 1. Is Bento4 the right SDK to use for reading/writing MP4 files in C++? If not, is there something else available or better? 1. Using that SDK, I was trying to read an .mp4 file and then just write it out to another file using their instructions, but the file I get is pretty much empty (20KB) whereas the original is ~80KB. Does anyone have sample code to do this? I used their AAC2Mp4 and Mp42AAC code as examples, but to no avail. Thanks very much for your help! Nasser _______________________________________________ NOTE: Please use clear subject lines for your posts. Include [audio, [video], [systems], [general] or another apppropriate identifier to indicate the type of question you have. Note: Conduct on the mailing list is subject to the Antitrust guidelines found at http://www.mpegif.org/public/documents/vault/mp-out-30042-Antitrust.php -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090206/fcaaf872/attachment-0001.html From bok at bok.net Fri Feb 6 11:00:32 2009 From: bok at bok.net (Gilles Boccon-Gibod) Date: Fri, 6 Feb 2009 08:00:32 -0800 Subject: [Mp4-tech] Bento4 questions from a video/audio novice In-Reply-To: References: Message-ID: Hi Nasser, Which version of the Bento4 SDK are you using? I would recommend using the most recent version from the SVN repository (located at https://zebulon.bok.net/svn/Bento4/trunk ). When you say you're reading one file and writing to another, are you doing this with one of the example apps (like mp4edit, mp4tag, mp4encrypt, etc...) or are you doing this by writing yourself a program that calls the APIs? This type of function can be done in many ways depending on what you want to achieve. Give me some details, I can help you out with this. Regards, -- Gilles On Feb 5, 2009, at 2:17 PM, Al-sulaihim, Nasser wrote: > Hello List, > > I?m dabbling for the first time in this arena and I have 2 questions: > > Is Bento4 the right SDK to use for reading/writing MP4 files in C++? > If not, is there something else available or better? > > > Using that SDK, I was trying to read an .mp4 file and then just > write it out to another file using their instructions, but the file > I get is pretty much empty (20KB) whereas the original is ~80KB. > Does anyone have sample code to do this? I used their AAC2Mp4 and > Mp42AAC code as examples, but to no avail. > > Thanks very much for your help! > > Nasser > _______________________________________________ > NOTE: Please use clear subject lines for your posts. Include [audio, > [video], [systems], [general] or another apppropriate identifier to > indicate the type of question you have. > > Note: Conduct on the mailing list is subject to the Antitrust > guidelines found at http://www.mpegif.org/public/documents/vault/mp-out-30042-Antitrust.php -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090206/4cce503b/attachment-0001.html From bok at bok.net Fri Feb 6 12:43:27 2009 From: bok at bok.net (Gilles Boccon-Gibod) Date: Fri, 6 Feb 2009 09:43:27 -0800 Subject: [Mp4-tech] Bento4 questions from a video/audio novice In-Reply-To: References: Message-ID: <81BFF34B-DC6C-445C-A4CF-EEB65F94A35C@bok.net> Nasser, the code path you have here is correct. The problem, I believe, is that the version of Bento4 you got from SourceForge has problems writing files with mutliple tracks. This has been fixed long ago, and is available in the source code repository, but the sourceforge releases have not been updated (we will do that shortly). I suggest that you pull down the most recent version of the library (use SVN to get the source code from https://zebulon.bok.net/svn/Bento4/trunk ). You'll also find more examples/test apps that illustrate various ways of creating files using the API (adding media samples, etc...). If you need more detailed help, don't hesitate to email me directly. -- Gilles On Feb 6, 2009, at 8:44 AM, Al-sulaihim, Nasser wrote: > Hi Gilles, > > Thanks for responding! I wasn?t sure how active this list was. I?m > using a Bento4 package that I got from sourceforge, version 0.9.8-189. > > I?m sorry I wasn?t clearer regarding what I?m doing. I?m writing my > own code to use the API. I thought it would be as simple as doing > the following, but what comes out is not the same as what goes in. > > // create the input stream > AP4_ByteStream* input = > new AP4_FileByteStream(*args++, > > AP4_FileByteStream::STREAM_MODE_READ); > > // create the output stream > AP4_ByteStream* output = > new AP4_FileByteStream(*args++, > > AP4_FileByteStream::STREAM_MODE_WRITE); > > // open the file > AP4_File* input_file = new AP4_File(*input); > > // get the movie > AP4_SampleDescription* sample_description; > AP4_Track* audio_track; > AP4_Movie* movie = input_file->GetMovie(); > > // create a multimedia file > AP4_File* file = new AP4_File(movie); > > // set the file type > AP4_UI32 compatible_brands[2] = { > AP4_FILE_BRAND_ISOM, > AP4_FILE_BRAND_MP42 > }; > file->SetFileType(AP4_FILE_BRAND_M4A_, 0, compatible_brands, 2); > > // create a writer to write the file > AP4_FileWriter* writer = new AP4_FileWriter(*file); > > // write the file to the output > writer->Write(*output); > > > Maybe I misunderstood how it all works. I appreciate your help very > much! > > Thanks, > Nasser > > From: Gilles Boccon-Gibod [mailto:bok at bok.net] > Sent: Friday, February 06, 2009 9:01 AM > To: Al-sulaihim, Nasser > Cc: mp4-tech at lists.mpegif.org > Subject: Re: [Mp4-tech] Bento4 questions from a video/audio novice > > Hi Nasser, > > Which version of the Bento4 SDK are you using? I would recommend > using the most recent version from the SVN repository (located at https://zebulon.bok.net/svn/Bento4/trunk > ). > When you say you're reading one file and writing to another, are you > doing this with one of the example apps (like mp4edit, mp4tag, > mp4encrypt, etc...) or are you doing this by writing yourself a > program that calls the APIs? This type of function can be done in > many ways depending on what you want to achieve. Give me some > details, I can help you out with this. > > Regards, > > -- Gilles > > On Feb 5, 2009, at 2:17 PM, Al-sulaihim, Nasser wrote: > > > Hello List, > > I?m dabbling for the first time in this arena and I have 2 questions: > > Is Bento4 the right SDK to use for reading/writing MP4 files in C++? > If not, is there something else available or better? > > > Using that SDK, I was trying to read an .mp4 file and then just > write it out to another file using their instructions, but the file > I get is pretty much empty (20KB) whereas the original is ~80KB. > Does anyone have sample code to do this? I used their AAC2Mp4 and > Mp42AAC code as examples, but to no avail. > > Thanks very much for your help! > > Nasser > _______________________________________________ > NOTE: Please use clear subject lines for your posts. Include [audio, > [video], [systems], [general] or another apppropriate identifier to > indicate the type of question you have. > > Note: Conduct on the mailing list is subject to the Antitrust > guidelines found at http://www.mpegif.org/public/documents/vault/mp-out-30042-Antitrust.php > -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090206/1875b09d/attachment-0001.html From jennyc2004 at gmail.com Sat Feb 7 11:25:46 2009 From: jennyc2004 at gmail.com (Jenny Cheng) Date: Sat, 7 Feb 2009 08:25:46 -0800 Subject: [Mp4-tech] 264 NAL not ended on the right place Message-ID: Hello, I insert MMCO information into slice header and byte alignment. somehow after the insertion, a few frames out of the whole transport stream has error on the last slice data reading. The last slice NAL ended ahead instead of the right place. Any suggestions? Really appreciate your help. Thanks, Jenny From mrison at hotmail.com Mon Feb 9 19:21:14 2009 From: mrison at hotmail.com (Mark RISON) Date: Tue, 10 Feb 2009 00:21:14 +0000 Subject: [Mp4-tech] Problems with buffer fullness + alignment in ADIF files Message-ID: Sorry, I missed a + 1 in my analysis of the ADIF format. So in Annex 1.A of ISO 14496-3:2001 it's actually: adif_id[32] copyright_id_present[1] if (copyright_id_present) { copyright_id[72] } orig_copy[1] home[1] bitstream_type[1] bitrate[23] num_pce[4] for (i = 0; i < num_pce + 1; ++i) { if (bitstream_type == 0) { adif_buffer_fullness[20] } program_config_element() } while (data()) { raw_data_block() byte_alignment() } While in Annex 1.A of ISO 14496-3:2005 it's actually: adif_id[32] copyright_id_present[1] if (copyright_id_present) { copyright_id[72] } orig_copy[1] home[1] bitstream_type[1] bitrate[23] num_pce[4] if (bitstream_type == 0) { adif_buffer_fullness[20] } for (i = 0; i < num_pce + 1; ++i) { program_config_element() } byte_alignment() while (data()) { raw_data_block() } Isn't the byte_alignment() in the 2005 version superfluous, since there's always at least one program_config_element() and this itself contains a byte_alignment() at the end? What about the byte_alignment() in the 2001 version? Is it superfluous too? But most importantly of all, if there's more than one PCE, then is there one buffer fullness per PCE or one for the whole file? All of the ADIF files in the MPEG conformance suite seem to have just one PCE (i.e. num_pce is 0) so it's not possible to work this out by experiment. Mark -- CPC/IP - A TCP/IP stack for Amstrad CPCs -- http://www.cepece.info/cpcip/ "Z88 vs CPC? Christ. How did we miss that platform war?" -- http://www.ntk.net/index.cgi?b=02000-01-28&l=111#l _________________________________________________________________ Windows Live Messenger just got better .Video display pics, contact updates & more. http://www.download.live.com/messenger From michael.haertl at iis.fraunhofer.de Mon Feb 9 22:19:17 2009 From: michael.haertl at iis.fraunhofer.de (Michael Haertl) Date: Tue, 10 Feb 2009 04:19:17 +0100 Subject: [Mp4-tech] Problems with buffer fullness + alignment in ADIF files In-Reply-To: References: Message-ID: <4990F235.4060108@iis.fraunhofer.de> Hello Mark, Mark RISON wrote: > Sorry, I missed a + 1 in my analysis of the ADIF format. > > So in Annex 1.A of ISO 14496-3:2001 it's actually: > > adif_id[32] > copyright_id_present[1] > if (copyright_id_present) { > copyright_id[72] > } > orig_copy[1] > home[1] > bitstream_type[1] > bitrate[23] > num_pce[4] > for (i = 0; i < num_pce + 1; ++i) { > if (bitstream_type == 0) { > adif_buffer_fullness[20] > } > program_config_element() > } > while (data()) { > raw_data_block() > byte_alignment() > } > > While in Annex 1.A of ISO 14496-3:2005 it's actually: > > adif_id[32] > copyright_id_present[1] > if (copyright_id_present) { > copyright_id[72] > } > orig_copy[1] > home[1] > bitstream_type[1] > bitrate[23] > num_pce[4] > if (bitstream_type == 0) { > adif_buffer_fullness[20] > } > for (i = 0; i < num_pce + 1; ++i) { > program_config_element() > } > byte_alignment() > while (data()) { > raw_data_block() > } > > Isn't the byte_alignment() in the 2005 version superfluous, since > there's always at least one program_config_element() and this itself > contains a byte_alignment() at the end? I'd say you are right. I shouldn't hurt though. > What about the byte_alignment() in the 2001 version? Is it > superfluous too? Not sure about the 2001 version. I would have to look up the history of MPEG input and output papers why this changed. I'd simply take the latest version. MPEG wouldn't have "changed" this if it would have disturbed existing bitstreams or implementations. I can't remember an AAC bitstream with multiple programs. That's not necessarily a proof such bitstreams don't exist ;-) But although it's possible _within_ AAC, multiple programs are usually handled outside somewhere in the application or systems layer, using separate bitstreams. > But most importantly of all, if there's more than one PCE, then is > there one buffer fullness per PCE or one for the whole file? All of > the ADIF files in the MPEG conformance suite seem to have just one PCE > (i.e. num_pce is 0) so it's not possible to work this out by > experiment. Not by re-reading the standard, but just by considering what it is actually used for, i would say: there is just one buffer_fullness. The buffer_fullness is considered to give the decoder a measure when it can start playout without input buffer underrun in case of continous constant bitrate transmission. And this is only possible when you look at the whole bitstream (a program is just a subset of element_ids within every frame). Independend buffer_fullness for independend programs within one bitstream would lead to a VBR bitstream effectively. Second the buffer_fullness is not considered to be valid for the whole file. It is only valid for a certain timestamp, in case of ADIF for the first frame or file start, in case of ADTS or LATM for the frame in which it is read. Due to the varying nature of the bit reservoir in the encoder the buffer_fullness changes over time. Regards, Michael -- /* Michael Haertl, Fraunhofer IIS http://www.iis.fraunhofer.de/amm */ From bok at bok.net Tue Feb 10 12:13:32 2009 From: bok at bok.net (Gilles Boccon-Gibod) Date: Tue, 10 Feb 2009 09:13:32 -0800 Subject: [Mp4-tech] Bento4 questions from a video/audio novice In-Reply-To: <502e112e0902100846h75d6e019g7c21068a19e7b7b6@mail.gmail.com> References: <81BFF34B-DC6C-445C-A4CF-EEB65F94A35C@bok.net> <20090209213020.DA0164C8165@smtp4-g21.free.fr> <502e112e0902100846h75d6e019g7c21068a19e7b7b6@mail.gmail.com> Message-ID: <8C28645B-674E-4239-B94E-44E6FDBFD38B@bok.net> Actually, I spoke too fast when I said this worked :-) It 'should' work. The part of the code below that references sample descriptions doesn't actually do anything, so I just ignored that part (probably left over from a copy/paste). But the sequence: AP4_File* file = new AP4_File(movie) AP4_FileWriter* writer = new AP4_FileWriter(*file); writer->Write(*output); should, in theory, do exactly what it says: 1) parse a file from disk, and 2) write it back to disk. AP4_FileWriter's responsibility is to read all the samples from its input, and write them to disk, along with the moov, etc... But... the way the AP4_FileWriter class is structured in the current release of the library, this won't work as planned, because it currently expects the AP4_File object passed to it to be a 'synthetic' one (i.e one where the samples have been added programatically, not one where they are parsed from a file), so the chunk offsets are off... The reason for this is that there are other classes in the library better suited at doing transformation from disk->disk, such as the AP4_Processor class. However, AP4_FileWriter *SHOULD* work regardless of whether its input is synthetic or parsed from file, so this is something we will fix in the next release. In the meantime, we can help with pointers and sample/test code if anyone is interested in supporting a scenario like the one described below. Regards, -- Gilles On Feb 10, 2009, at 8:46 AM, Richard Hill wrote: > Hi all, > > How can it work as soon as no audio/video data sample seem to be > read and written ? Does the AP4_Movie contain both iso media atoms & > audio/video data ? > > Richard > > > > 2009/2/9 Richard Hill > > > De : mp4-tech-bounces at lists.mpegif.org [mailto:mp4-tech-bounces at lists.mpegif.org > ] De la part de Gilles Boccon-Gibod > Envoy? : vendredi 6 f?vrier 2009 18:43 > ? : Al-sulaihim, Nasser > Cc : mp4-tech at lists.mpegif.org > Objet : Re: [Mp4-tech] Bento4 questions from a video/audio novice > > Nasser, > > the code path you have here is correct. The problem, I believe, is > that the version of Bento4 you got from SourceForge has problems > writing files with mutliple tracks. This has been fixed long ago, > and is available in the source code repository, but the sourceforge > releases have not been updated (we will do that shortly). I suggest > that you pull down the most recent version of the library (use SVN > to get the source code from https://zebulon.bok.net/svn/Bento4/ > trunk ). You'll also find more examples/test apps that illustrate > various ways of creating files using the API (adding media samples, > etc...). > If you need more detailed help, don't hesitate to email me directly. > > -- Gilles > > On Feb 6, 2009, at 8:44 AM, Al-sulaihim, Nasser wrote: > >> Hi Gilles, >> Thanks for responding! I wasn't sure how active this list was. I'm >> using a Bento4 package that I got from sourceforge, version >> 0.9.8-189. >> I'm sorry I wasn't clearer regarding what I'm doing. I'm writing my >> own code to use the API. I thought it would be as simple as doing >> the following, but what comes out is not the same as what goes in. >> // create the input stream >> AP4_ByteStream* input = >> new AP4_FileByteStream(*args++, >> >> AP4_FileByteStream::STREAM_MODE_READ); >> >> // create the output stream >> AP4_ByteStream* output = >> new AP4_FileByteStream(*args++, >> >> AP4_FileByteStream::STREAM_MODE_WRITE); >> >> // open the file >> AP4_File* input_file = new AP4_File(*input); >> >> // get the movie >> AP4_SampleDescription* sample_description; >> AP4_Track* audio_track; >> AP4_Movie* movie = input_file->GetMovie(); >> >> // create a multimedia file >> AP4_File* file = new AP4_File(movie); >> >> // set the file type >> AP4_UI32 compatible_brands[2] = { >> AP4_FILE_BRAND_ISOM, >> AP4_FILE_BRAND_MP42 >> }; >> file->SetFileType(AP4_FILE_BRAND_M4A_, 0, compatible_brands, 2); >> >> // create a writer to write the file >> AP4_FileWriter* writer = new AP4_FileWriter(*file); >> >> // write the file to the output >> writer->Write(*output); >> Maybe I misunderstood how it all works. I appreciate your help very >> much! >> Thanks, >> Nasser >> From: Gilles Boccon-Gibod [mailto:bok at bok.net] >> Sent: Friday, February 06, 2009 9:01 AM >> To: Al-sulaihim, Nasser >> Cc: mp4-tech at lists.mpegif.org >> Subject: Re: [Mp4-tech] Bento4 questions from a video/audio novice >> Hi Nasser, >> Which version of the Bento4 SDK are you using? I would recommend >> using the most recent version from the SVN repository (located at https://zebulon.bok.net/svn/Bento4/trunk >> ). >> When you say you're reading one file and writing to another, are >> you doing this with one of the example apps (like mp4edit, mp4tag, >> mp4encrypt, etc...) or are you doing this by writing yourself a >> program that calls the APIs? This type of function can be done in >> many ways depending on what you want to achieve. Give me some >> details, I can help you out with this. >> Regards, >> -- Gilles >> On Feb 5, 2009, at 2:17 PM, Al-sulaihim, Nasser wrote: >> >> >> Hello List, >> I'm dabbling for the first time in this arena and I have 2 questions: >> ? Is Bento4 the right SDK to use for reading/writing MP4 files in C >> ++? If not, is there something else available or better? >> ? Using that SDK, I was trying to read an .mp4 file and then just >> write it out to another file using their instructions, but the file >> I get is pretty much empty (20KB) whereas the original is ~80KB. >> Does anyone have sample code to do this? I used their AAC2Mp4 and >> Mp42AAC code as examples, but to no avail. >> Thanks very much for your help! >> Nasser >> _______________________________________________ >> NOTE: Please use clear subject lines for your posts. Include >> [audio, [video], [systems], [general] or another apppropriate >> identifier to indicate the type of question you have. >> >> Note: Conduct on the mailing list is subject to the Antitrust >> guidelines found at http://www.mpegif.org/public/documents/vault/mp-out-30042-Antitrust.php > > From mrison at hotmail.com Tue Feb 10 13:42:50 2009 From: mrison at hotmail.com (Mark RISON) Date: Tue, 10 Feb 2009 18:42:50 +0000 Subject: [Mp4-tech] Problems with buffer fullness + alignment in ADIF files In-Reply-To: <4990F235.4060108@iis.fraunhofer.de> References: <4990F235.4060108@iis.fraunhofer.de> Message-ID: >> Isn't the byte_alignment() in the 2005 version superfluous, since >> there's always at least one program_config_element() and this itself >> contains a byte_alignment() at the end? > I'd say you are right. I shouldn't hurt though. OK. >> What about the byte_alignment() in the 2001 version? Is it >> superfluous too? > Not sure about the 2001 version. I would have to look up the history of > MPEG input and output papers why this changed. I'd simply take the > latest version. MPEG wouldn't have "changed" this if it would have > disturbed existing bitstreams or implementations. I've just noticed (not sure how I missed it last time!) that there's a byte_alignment() at the end of the 2005 flavour of raw_data_block(), which wasn't present in the 2001 flavour, so that explains it. >> But most importantly of all, if there's more than one PCE, then is >> there one buffer fullness per PCE or one for the whole file? All of >> the ADIF files in the MPEG conformance suite seem to have just one PCE >> (i.e. num_pce is 0) so it's not possible to work this out by >> experiment. > Not by re-reading the standard, but just by considering what it is > actually used for, i would say: there is just one buffer_fullness. > [...] > I can't remember an AAC bitstream with multiple programs. That's not > necessarily a proof such bitstreams don't exist ;-) But although it's > possible _within_ AAC, multiple programs are usually handled outside > somewhere in the application or systems layer, using separate bitstreams. I see. That would explain why none of the conformance files have more than one PCE. I won't worry about multiple-PCE ADIF files any longer! Thanks for the analysis. I will therefore take the ADIF format as being: adif_id[32] // expect "ADIF" copyright_id_present[1] if (copyright_id_present) { copyright_id[72] } orig_copy[1] home[1] bitstream_type[1] bitrate[23] num_pce[4] // expect 0 if (bitstream_type == 0) { adif_buffer_fullness[20] } program_config_element() // implicitly aligns at end while (data()) { raw_data_block() // implicitly aligns at end } Another little question, if I may: is there any way to determine the average bitrate for a VBR file, or for a CBR file where the bitrate field's value is 0? Mark -- CPC/IP - A TCP/IP stack for Amstrad CPCs -- http://www.cepece.info/cpcip/ "Z88 vs CPC? Christ. How did we miss that platform war?" -- http://www.ntk.net/index.cgi?b=02000-01-28&l=111#l _________________________________________________________________ Make a mini you and download it into Windows Live Messenger http://clk.atdmt.com/UKM/go/111354029/direct/01/ From mrison at hotmail.com Tue Feb 10 13:57:05 2009 From: mrison at hotmail.com (Mark RISON) Date: Tue, 10 Feb 2009 18:57:05 +0000 Subject: [Mp4-tech] Support for SBR in ADTS and ADIF Message-ID: Do ADTS and ADIF support SBR (i.e. AAC+/aacPlus/eAAC/HE-AAC/HE/...) or only plain AAC? If they do support it, presumably this is by "implicit signalling", i.e. EXT_SBR_DATA(_CRC) appearing in the raw data blocks -- there's no other way to tell, right? Mark -- CPC/IP - A TCP/IP stack for Amstrad CPCs -- http://www.cepece.info/cpcip/ "Z88 vs CPC? Christ. How did we miss that platform war?" -- http://www.ntk.net/index.cgi?b=02000-01-28&l=111#l _________________________________________________________________ Win New York holidays with Kellogg?s & Live Search http://clk.atdmt.com/UKM/go/111354033/direct/01/ From michael.haertl at iis.fraunhofer.de Tue Feb 10 14:18:02 2009 From: michael.haertl at iis.fraunhofer.de (Michael Haertl) Date: Tue, 10 Feb 2009 20:18:02 +0100 Subject: [Mp4-tech] Problems with buffer fullness + alignment in ADIF files In-Reply-To: References: <4990F235.4060108@iis.fraunhofer.de> Message-ID: <4991D2EA.3060905@iis.fraunhofer.de> Mark RISON wrote: >>> Isn't the byte_alignment() in the 2005 version superfluous, since >>> there's always at least one program_config_element() and this itself >>> contains a byte_alignment() at the end? >> I'd say you are right. I shouldn't hurt though. > > OK. > >>> What about the byte_alignment() in the 2001 version? Is it >>> superfluous too? >> Not sure about the 2001 version. I would have to look up the history of >> MPEG input and output papers why this changed. I'd simply take the >> latest version. MPEG wouldn't have "changed" this if it would have >> disturbed existing bitstreams or implementations. > > I've just noticed (not sure how I missed it last time!) that there's > a byte_alignment() at the end of the 2005 flavour of raw_data_block(), > which wasn't present in the 2001 flavour, so that explains it. > >>> But most importantly of all, if there's more than one PCE, then is >>> there one buffer fullness per PCE or one for the whole file? All of >>> the ADIF files in the MPEG conformance suite seem to have just one PCE >>> (i.e. num_pce is 0) so it's not possible to work this out by >>> experiment. >> Not by re-reading the standard, but just by considering what it is >> actually used for, i would say: there is just one buffer_fullness. > >> [...] > >> I can't remember an AAC bitstream with multiple programs. That's not >> necessarily a proof such bitstreams don't exist ;-) But although it's >> possible _within_ AAC, multiple programs are usually handled outside >> somewhere in the application or systems layer, using separate bitstreams. > > I see. That would explain why none of the conformance files have more > than one PCE. I won't worry about multiple-PCE ADIF files any longer! > > Thanks for the analysis. I will therefore take the ADIF format as being: > > adif_id[32] // expect "ADIF" > copyright_id_present[1] > if (copyright_id_present) { > copyright_id[72] > } > orig_copy[1] > home[1] > bitstream_type[1] > bitrate[23] > num_pce[4] // expect 0 > if (bitstream_type == 0) { > adif_buffer_fullness[20] > } > program_config_element() // implicitly aligns at end > while (data()) { > raw_data_block() // implicitly aligns at end > } > > Another little question, if I may: is there any way to determine the > average bitrate for a VBR file, or for a CBR file where the bitrate > field's value is 0? For an ADIF file you can only be sure by parsing the whole file. Just curious: do you have a certain application where you need ADIF. This format has several limitations in the real world, like: - you cannot seek - if there is a sinlge bit error you usually have to stop decoding completely Michael -- /* Michael Haertl, Fraunhofer IIS http://www.iis.fraunhofer.de/amm */ From hillrichard333 at gmail.com Tue Feb 10 11:46:52 2009 From: hillrichard333 at gmail.com (Richard Hill) Date: Tue, 10 Feb 2009 17:46:52 +0100 Subject: [Mp4-tech] Bento4 questions from a video/audio novice In-Reply-To: <20090209213020.DA0164C8165@smtp4-g21.free.fr> References: <81BFF34B-DC6C-445C-A4CF-EEB65F94A35C@bok.net> <20090209213020.DA0164C8165@smtp4-g21.free.fr> Message-ID: <502e112e0902100846h75d6e019g7c21068a19e7b7b6@mail.gmail.com> Hi all, How can it work as soon as no audio/video data sample seem to be read and written ? Does the AP4_Movie contain both iso media atoms & audio/video data ? Richard 2009/2/9 Richard Hill > > > ------------------------------ > *De :* mp4-tech-bounces at lists.mpegif.org [mailto: > mp4-tech-bounces at lists.mpegif.org] *De la part de* Gilles Boccon-Gibod > *Envoy? :* vendredi 6 f?vrier 2009 18:43 > *? :* Al-sulaihim, Nasser > *Cc :* mp4-tech at lists.mpegif.org > *Objet :* Re: [Mp4-tech] Bento4 questions from a video/audio novice > > Nasser, > the code path you have here is correct. The problem, I believe, is that the > version of Bento4 you got from SourceForge has problems writing files with > mutliple tracks. This has been fixed long ago, and is available in the > source code repository, but the sourceforge releases have not been updated > (we will do that shortly). I suggest that you pull down the most recent > version of the library (use SVN to get the source code from > https://zebulon.bok.net/svn/Bento4/trunk ). You'll also find more > examples/test apps that illustrate various ways of creating files using the > API (adding media samples, etc...). > If you need more detailed help, don't hesitate to email me directly. > > -- Gilles > > On Feb 6, 2009, at 8:44 AM, Al-sulaihim, Nasser wrote: > > Hi Gilles, > Thanks for responding! I wasn't sure how active this list was. I'm using > a Bento4 package that I got from sourceforge, version 0.9.8-189. > I'm sorry I wasn't clearer regarding what I'm doing. I'm writing my own > code to use the API. I thought it would be as simple as doing the following, > but what comes out is not the same as what goes in. > // create the input stream > AP4_ByteStream* input = > new AP4_FileByteStream(*args++, > AP4_FileByteStream::STREAM_MODE_READ); > > // create the output stream > AP4_ByteStream* output = > new AP4_FileByteStream(*args++, > AP4_FileByteStream::STREAM_MODE_WRITE); > > // open the file > AP4_File* input_file = new AP4_File(*input); > > // get the movie > AP4_SampleDescription* sample_description; > AP4_Track* audio_track; > AP4_Movie* movie = input_file->GetMovie(); > > // create a multimedia file > AP4_File* file = new AP4_File(movie); > > // set the file type > AP4_UI32 compatible_brands[2] = { > AP4_FILE_BRAND_ISOM, > AP4_FILE_BRAND_MP42 > }; > file->SetFileType(AP4_FILE_BRAND_M4A_, 0, compatible_brands, 2); > > // create a writer to write the file > AP4_FileWriter* writer = new AP4_FileWriter(*file); > > // write the file to the output > writer->Write(*output); > Maybe I misunderstood how it all works. I appreciate your help very much! > Thanks, > Nasser > ------------------------------ > *From:* Gilles Boccon-Gibod [mailto:bok at bok.net ] > *Sent:* Friday, February 06, 2009 9:01 AM > *To:* Al-sulaihim, Nasser > *Cc:* mp4-tech at lists.mpegif.org > *Subject:* Re: [Mp4-tech] Bento4 questions from a video/audio novice > Hi Nasser, > Which version of the Bento4 SDK are you using? I would recommend using > the most recent version from the SVN repository (located at > https://zebulon.bok.net/svn/Bento4/trunk ). > When you say you're reading one file and writing to another, are you > doing this with one of the example apps (like mp4edit, mp4tag, mp4encrypt, > etc...) or are you doing this by writing yourself a program that calls the > APIs? This type of function can be done in many ways depending on what you > want to achieve. Give me some details, I can help you out with this. > Regards, > -- Gilles > On Feb 5, 2009, at 2:17 PM, Al-sulaihim, Nasser wrote: > > > Hello List, > I'm dabbling for the first time in this arena and I have 2 questions: > > 1. Is Bento4 the right SDK to use for reading/writing MP4 files in C++? > If not, is there something else available or better? > > > 1. Using that SDK, I was trying to read an .mp4 file and then just > write it out to another file using their instructions, but the file I get is > pretty much empty (20KB) whereas the original is ~80KB. Does anyone have > sample code to do this? I used their AAC2Mp4 and Mp42AAC code as examples, > but to no avail. > > Thanks very much for your help! > Nasser > _______________________________________________ > NOTE: Please use clear subject lines for your posts. Include [audio, > [video], [systems], [general] or another apppropriate identifier to indicate > the type of question you have. > > Note: Conduct on the mailing list is subject to the Antitrust guidelines > found at > http://www.mpegif.org/public/documents/vault/mp-out-30042-Antitrust.php > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090210/1bb23357/attachment-0001.html From hillrichard333 at gmail.com Tue Feb 10 13:00:53 2009 From: hillrichard333 at gmail.com (Richard Hill) Date: Tue, 10 Feb 2009 19:00:53 +0100 Subject: [Mp4-tech] Bento4 questions from a video/audio novice In-Reply-To: <8C28645B-674E-4239-B94E-44E6FDBFD38B@bok.net> References: <81BFF34B-DC6C-445C-A4CF-EEB65F94A35C@bok.net> <20090209213020.DA0164C8165@smtp4-g21.free.fr> <502e112e0902100846h75d6e019g7c21068a19e7b7b6@mail.gmail.com> <8C28645B-674E-4239-B94E-44E6FDBFD38B@bok.net> Message-ID: <502e112e0902101000y3e0ee370q11252aabf6e9c235@mail.gmail.com> By looking at the AP4_FileWriter definition : https://zebulon.bok.net/svn/Bento4/trunk/Source/C++/Core/Ap4FileWriter.h I don't see any way of setting output file parameters (file type, asset informations, rtp streaming packetization, ...)... am I right ? Richard 2009/2/10 Gilles Boccon-Gibod > Actually, I spoke too fast when I said this worked :-) It 'should' work. > The part of the code below that references sample descriptions doesn't > actually do anything, so I just ignored that part (probably left over from a > copy/paste). > But the sequence: > > AP4_File* file = new AP4_File(movie) > AP4_FileWriter* writer = new AP4_FileWriter(*file); > writer->Write(*output); > > should, in theory, do exactly what it says: 1) parse a file from disk, and > 2) write it back to disk. > AP4_FileWriter's responsibility is to read all the samples from its input, > and write them to disk, along with the moov, etc... > > But... the way the AP4_FileWriter class is structured in the current > release of the library, this won't work as planned, because it currently > expects the AP4_File object passed to it to be a 'synthetic' one (i.e one > where the samples have been added programatically, not one where they are > parsed from a file), so the chunk offsets are off... The reason for this is > that there are other classes in the library better suited at doing > transformation from disk->disk, such as the AP4_Processor class. > However, AP4_FileWriter *SHOULD* work regardless of whether its input is > synthetic or parsed from file, so this is something we will fix in the next > release. > In the meantime, we can help with pointers and sample/test code if anyone > is interested in supporting a scenario like the one described below. > > Regards, > > -- Gilles > > > On Feb 10, 2009, at 8:46 AM, Richard Hill wrote: > > Hi all, >> >> How can it work as soon as no audio/video data sample seem to be read and >> written ? Does the AP4_Movie contain both iso media atoms & audio/video data >> ? >> >> Richard >> >> >> >> 2009/2/9 Richard Hill >> >> >> De : mp4-tech-bounces at lists.mpegif.org [mailto: >> mp4-tech-bounces at lists.mpegif.org] De la part de Gilles Boccon-Gibod >> Envoy? : vendredi 6 f?vrier 2009 18:43 >> ? : Al-sulaihim, Nasser >> Cc : mp4-tech at lists.mpegif.org >> Objet : Re: [Mp4-tech] Bento4 questions from a video/audio novice >> >> Nasser, >> >> the code path you have here is correct. The problem, I believe, is that >> the version of Bento4 you got from SourceForge has problems writing files >> with mutliple tracks. This has been fixed long ago, and is available in the >> source code repository, but the sourceforge releases have not been updated >> (we will do that shortly). I suggest that you pull down the most recent >> version of the library (use SVN to get the source code from >> https://zebulon.bok.net/svn/Bento4/trunk ). You'll also find more >> examples/test apps that illustrate various ways of creating files using the >> API (adding media samples, etc...). >> If you need more detailed help, don't hesitate to email me directly. >> >> -- Gilles >> >> On Feb 6, 2009, at 8:44 AM, Al-sulaihim, Nasser wrote: >> >> Hi Gilles, >>> Thanks for responding! I wasn't sure how active this list was. I'm using >>> a Bento4 package that I got from sourceforge, version 0.9.8-189. >>> I'm sorry I wasn't clearer regarding what I'm doing. I'm writing my own >>> code to use the API. I thought it would be as simple as doing the following, >>> but what comes out is not the same as what goes in. >>> // create the input stream >>> AP4_ByteStream* input = >>> new AP4_FileByteStream(*args++, >>> AP4_FileByteStream::STREAM_MODE_READ); >>> >>> // create the output stream >>> AP4_ByteStream* output = >>> new AP4_FileByteStream(*args++, >>> AP4_FileByteStream::STREAM_MODE_WRITE); >>> >>> // open the file >>> AP4_File* input_file = new AP4_File(*input); >>> >>> // get the movie >>> AP4_SampleDescription* sample_description; >>> AP4_Track* audio_track; >>> AP4_Movie* movie = input_file->GetMovie(); >>> >>> // create a multimedia file >>> AP4_File* file = new AP4_File(movie); >>> >>> // set the file type >>> AP4_UI32 compatible_brands[2] = { >>> AP4_FILE_BRAND_ISOM, >>> AP4_FILE_BRAND_MP42 >>> }; >>> file->SetFileType(AP4_FILE_BRAND_M4A_, 0, compatible_brands, 2); >>> >>> // create a writer to write the file >>> AP4_FileWriter* writer = new AP4_FileWriter(*file); >>> >>> // write the file to the output >>> writer->Write(*output); >>> Maybe I misunderstood how it all works. I appreciate your help very much! >>> Thanks, >>> Nasser >>> From: Gilles Boccon-Gibod [mailto:bok at bok.net] >>> Sent: Friday, February 06, 2009 9:01 AM >>> To: Al-sulaihim, Nasser >>> Cc: mp4-tech at lists.mpegif.org >>> Subject: Re: [Mp4-tech] Bento4 questions from a video/audio novice >>> Hi Nasser, >>> Which version of the Bento4 SDK are you using? I would recommend using >>> the most recent version from the SVN repository (located at >>> https://zebulon.bok.net/svn/Bento4/trunk ). >>> When you say you're reading one file and writing to another, are you >>> doing this with one of the example apps (like mp4edit, mp4tag, mp4encrypt, >>> etc...) or are you doing this by writing yourself a program that calls the >>> APIs? This type of function can be done in many ways depending on what you >>> want to achieve. Give me some details, I can help you out with this. >>> Regards, >>> -- Gilles >>> On Feb 5, 2009, at 2:17 PM, Al-sulaihim, Nasser wrote: >>> >>> >>> Hello List, >>> I'm dabbling for the first time in this arena and I have 2 questions: >>> ? Is Bento4 the right SDK to use for reading/writing MP4 files in >>> C++? If not, is there something else available or better? >>> ? Using that SDK, I was trying to read an .mp4 file and then just >>> write it out to another file using their instructions, but the file I get is >>> pretty much empty (20KB) whereas the original is ~80KB. Does anyone have >>> sample code to do this? I used their AAC2Mp4 and Mp42AAC code as examples, >>> but to no avail. >>> Thanks very much for your help! >>> Nasser >>> _______________________________________________ >>> NOTE: Please use clear subject lines for your posts. Include [audio, >>> [video], [systems], [general] or another apppropriate identifier to indicate >>> the type of question you have. >>> >>> Note: Conduct on the mailing list is subject to the Antitrust guidelines >>> found at >>> http://www.mpegif.org/public/documents/vault/mp-out-30042-Antitrust.php >>> >> >> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090210/5f8b0e99/attachment.html From alex.converse at gmail.com Tue Feb 10 14:52:01 2009 From: alex.converse at gmail.com (Alex Converse) Date: Tue, 10 Feb 2009 14:52:01 -0500 Subject: [Mp4-tech] Support for SBR in ADTS and ADIF In-Reply-To: References: Message-ID: On Tue, Feb 10, 2009 at 1:57 PM, Mark RISON wrote: > > Do ADTS and ADIF support SBR (i.e. AAC+/aacPlus/eAAC/HE-AAC/HE/...) > or only plain AAC? If they do support it, presumably this is by > "implicit signalling", i.e. EXT_SBR_DATA(_CRC) appearing in the raw > data blocks -- there's no other way to tell, right? > Yes, SBR is allowed in ADTS and ADIF files. Yes, only implicit signaling is available. Samples of AAC-LC+SBR in ADIF can be found in the MPEG-2 AAC conformance suite, prefixed with al_sbr at ftp://mpaudconf:adif2mp4 at ftp.iis.fraunhofer.de/mpeg2aac-conformance/compressedAdif/ . The reference tool adif2mp4 can be used to convert the adif and mp4 sbr test vectors to adts for testing. Regards, Alex Converse From alex.converse at gmail.com Tue Feb 10 15:17:42 2009 From: alex.converse at gmail.com (Alex Converse) Date: Tue, 10 Feb 2009 15:17:42 -0500 Subject: [Mp4-tech] AAC @ 7350 Hz Message-ID: Dear Experts, Some colleagues and I are coming to different interpretations AAC with a sample_rate_index/SamplingFrequencyIndex of 12. Is AAC with sample_rate_index = 12 legal? If yes, Is it only allowed in MPEG-4 AAC (In my version of 13818-7 it's still marked reserved, it's marked 7350 Hz in 14496-3:2005)? Is it allowed in the LC or MAIN profiles? Is it allowed in ADIF, MP4, and ADTS files? Should the tables for 8000 Hz be used. Are there any 7350 Hz test vectors available? Thanks, Alex Converse From bok at bok.net Tue Feb 10 16:18:14 2009 From: bok at bok.net (Gilles Boccon-Gibod) Date: Tue, 10 Feb 2009 13:18:14 -0800 Subject: [Mp4-tech] Bento4 questions from a video/audio novice In-Reply-To: <502e112e0902101000y3e0ee370q11252aabf6e9c235@mail.gmail.com> References: <81BFF34B-DC6C-445C-A4CF-EEB65F94A35C@bok.net> <20090209213020.DA0164C8165@smtp4-g21.free.fr> <502e112e0902100846h75d6e019g7c21068a19e7b7b6@mail.gmail.com> <8C28645B-674E-4239-B94E-44E6FDBFD38B@bok.net> <502e112e0902101000y3e0ee370q11252aabf6e9c235@mail.gmail.com> Message-ID: <1CF80F21-236C-48EE-9780-C42610DC5290@bok.net> You're right. Currently this class takes to parameters, because it only implements a single chunk-layout scheme. What it does is: it writes out the file type, then moov, then for each track of the input AP4_File's moov, sequentially, it reads samples from the input, and writes out the samples in an mdat box to the output. This means that it does not yet support chunk interleaving, etc... Other classes, like AP4_Processor, are capable of writing out files and sample data in interleaved order, provided that the input is already interleaved (it is used to take a file, parse it, do some modifications, and write it back, keeping the same sample interleaving). The next release, however, will enhance AP4_FileWriter so that you will be able to pass in some info to control what type of sample data interleaving you want. -- Gilles On Feb 10, 2009, at 10:00 AM, Richard Hill wrote: > By looking at the AP4_FileWriter definition : > https://zebulon.bok.net/svn/Bento4/trunk/Source/C++/Core/Ap4FileWriter.h > I don't see any way of setting output file parameters (file type, > asset informations, rtp streaming packetization, ...)... am I right ? > > Richard > > > 2009/2/10 Gilles Boccon-Gibod > Actually, I spoke too fast when I said this worked :-) It 'should' > work. The part of the code below that references sample descriptions > doesn't actually do anything, so I just ignored that part (probably > left over from a copy/paste). > But the sequence: > > > AP4_File* file = new AP4_File(movie) > AP4_FileWriter* writer = new AP4_FileWriter(*file); > writer->Write(*output); > > should, in theory, do exactly what it says: 1) parse a file from > disk, and 2) write it back to disk. > AP4_FileWriter's responsibility is to read all the samples from its > input, and write them to disk, along with the moov, etc... > > But... the way the AP4_FileWriter class is structured in the current > release of the library, this won't work as planned, because it > currently expects the AP4_File object passed to it to be a > 'synthetic' one (i.e one where the samples have been added > programatically, not one where they are parsed from a file), so the > chunk offsets are off... The reason for this is that there are other > classes in the library better suited at doing transformation from > disk->disk, such as the AP4_Processor class. > However, AP4_FileWriter *SHOULD* work regardless of whether its > input is synthetic or parsed from file, so this is something we will > fix in the next release. > In the meantime, we can help with pointers and sample/test code if > anyone is interested in supporting a scenario like the one described > below. > > Regards, > > -- Gilles > > > On Feb 10, 2009, at 8:46 AM, Richard Hill wrote: > > Hi all, > > How can it work as soon as no audio/video data sample seem to be > read and written ? Does the AP4_Movie contain both iso media atoms & > audio/video data ? > > Richard > > > > 2009/2/9 Richard Hill > > > De : mp4-tech-bounces at lists.mpegif.org [mailto:mp4-tech-bounces at lists.mpegif.org > ] De la part de Gilles Boccon-Gibod > Envoy? : vendredi 6 f?vrier 2009 18:43 > ? : Al-sulaihim, Nasser > Cc : mp4-tech at lists.mpegif.org > Objet : Re: [Mp4-tech] Bento4 questions from a video/audio novice > > Nasser, > > the code path you have here is correct. The problem, I believe, is > that the version of Bento4 you got from SourceForge has problems > writing files with mutliple tracks. This has been fixed long ago, > and is available in the source code repository, but the sourceforge > releases have not been updated (we will do that shortly). I suggest > that you pull down the most recent version of the library (use SVN > to get the source code from https://zebulon.bok.net/svn/Bento4/ > trunk ). You'll also find more examples/test apps that illustrate > various ways of creating files using the API (adding media samples, > etc...). > If you need more detailed help, don't hesitate to email me directly. > > -- Gilles > > On Feb 6, 2009, at 8:44 AM, Al-sulaihim, Nasser wrote: > > Hi Gilles, > Thanks for responding! I wasn't sure how active this list was. I'm > using a Bento4 package that I got from sourceforge, version 0.9.8-189. > I'm sorry I wasn't clearer regarding what I'm doing. I'm writing my > own code to use the API. I thought it would be as simple as doing > the following, but what comes out is not the same as what goes in. > // create the input stream > AP4_ByteStream* input = > new AP4_FileByteStream(*args++, > > AP4_FileByteStream::STREAM_MODE_READ); > > // create the output stream > AP4_ByteStream* output = > new AP4_FileByteStream(*args++, > > AP4_FileByteStream::STREAM_MODE_WRITE); > > // open the file > AP4_File* input_file = new AP4_File(*input); > > // get the movie > AP4_SampleDescription* sample_description; > AP4_Track* audio_track; > AP4_Movie* movie = input_file->GetMovie(); > > // create a multimedia file > AP4_File* file = new AP4_File(movie); > > // set the file type > AP4_UI32 compatible_brands[2] = { > AP4_FILE_BRAND_ISOM, > AP4_FILE_BRAND_MP42 > }; > file->SetFileType(AP4_FILE_BRAND_M4A_, 0, compatible_brands, 2); > > // create a writer to write the file > AP4_FileWriter* writer = new AP4_FileWriter(*file); > > // write the file to the output > writer->Write(*output); > Maybe I misunderstood how it all works. I appreciate your help very > much! > Thanks, > Nasser > From: Gilles Boccon-Gibod [mailto:bok at bok.net] > Sent: Friday, February 06, 2009 9:01 AM > To: Al-sulaihim, Nasser > Cc: mp4-tech at lists.mpegif.org > Subject: Re: [Mp4-tech] Bento4 questions from a video/audio novice > Hi Nasser, > Which version of the Bento4 SDK are you using? I would recommend > using the most recent version from the SVN repository (located at https://zebulon.bok.net/svn/Bento4/trunk > ). > When you say you're reading one file and writing to another, are you > doing this with one of the example apps (like mp4edit, mp4tag, > mp4encrypt, etc...) or are you doing this by writing yourself a > program that calls the APIs? This type of function can be done in > many ways depending on what you want to achieve. Give me some > details, I can help you out with this. > Regards, > -- Gilles > On Feb 5, 2009, at 2:17 PM, Al-sulaihim, Nasser wrote: > > > Hello List, > I'm dabbling for the first time in this arena and I have 2 questions: > ? Is Bento4 the right SDK to use for reading/writing MP4 > files in C++? If not, is there something else available or better? > ? Using that SDK, I was trying to read an .mp4 file and then > just write it out to another file using their instructions, but the > file I get is pretty much empty (20KB) whereas the original is > ~80KB. Does anyone have sample code to do this? I used their AAC2Mp4 > and Mp42AAC code as examples, but to no avail. > Thanks very much for your help! > Nasser > _______________________________________________ > NOTE: Please use clear subject lines for your posts. Include [audio, > [video], [systems], [general] or another apppropriate identifier to > indicate the type of question you have. > > Note: Conduct on the mailing list is subject to the Antitrust > guidelines found at http://www.mpegif.org/public/documents/vault/mp-out-30042-Antitrust.php > > > > > _______________________________________________ > NOTE: Please use clear subject lines for your posts. Include [audio, > [video], [systems], [general] or another apppropriate identifier to > indicate the type of question you have. > > Note: Conduct on the mailing list is subject to the Antitrust > guidelines found at http://www.mpegif.org/public/documents/vault/mp-out-30042-Antitrust.php -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090210/9c9d3179/attachment-0001.html From michael.haertl at iis.fraunhofer.de Tue Feb 10 20:16:46 2009 From: michael.haertl at iis.fraunhofer.de (Michael Haertl) Date: Wed, 11 Feb 2009 02:16:46 +0100 Subject: [Mp4-tech] AAC @ 7350 Hz In-Reply-To: References: Message-ID: <499226FE.6070300@iis.fraunhofer.de> Alex Converse wrote: > Some colleagues and I are coming to different interpretations AAC with > a sample_rate_index/SamplingFrequencyIndex of 12. Is AAC with > sample_rate_index = 12 legal? > If yes, Is it only allowed in MPEG-4 AAC (In my version of 13818-7 > it's still marked reserved, it's marked 7350 Hz in 14496-3:2005)? It's only allowed in MPEG-4 and afaik not in MPEG-2. > Is > it allowed in the LC or MAIN profiles? I see no restriction, it should be feasible for aot 1 and aot 2. > Is it allowed in ADIF, MP4, and > ADTS files? again, i see no restriction in the standard. > Should the tables for 8000 Hz be used. yes. > Are there any 7350 > Hz test vectors available? There are no 7350 AAC-only conformance files. The core layer of ac06 and er_ac221 has a sample rate of 7350 Hz. To my knowledge the main intention was to have a non-fractional factor when using CELP in combination with AAC-scalable at 22050 Hz or 44.1 kHz. For AAC (or CELP) only there is no real gain when using 7350 Hz over 8 kHz. Regards, Michael -- /* Michael Haertl, Fraunhofer IIS http://www.iis.fraunhofer.de/amm */ From denim83 at yahoo.com Tue Feb 10 22:57:04 2009 From: denim83 at yahoo.com (Abhishek Ballaney) Date: Tue, 10 Feb 2009 19:57:04 -0800 (PST) Subject: [Mp4-tech] Support for SBR in ADTS and ADIF Message-ID: <930128.28156.qm@web34807.mail.mud.yahoo.com> Dear Mark, ADTS & ADIF do support SBR & it is by implicit signaling only. Regards, abhishek --- On Wed, 11/2/09, Mark RISON wrote: From: Mark RISON Subject: [Mp4-tech] Support for SBR in ADTS and ADIF To: "mp4-tech ML" Received: Wednesday, 11 February, 2009, 12:27 AM Do ADTS and ADIF support SBR (i.e. AAC+/aacPlus/eAAC/HE-AAC/HE/...) or only plain AAC?? If they do support it, presumably this is by "implicit signalling", i.e. EXT_SBR_DATA(_CRC) appearing in the raw data blocks -- there's no other way to tell, right? Mark Make Yahoo!7 your homepage and win a trip to the Quiksilver Pro. Find out more -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090210/1cd809f7/attachment.html From Shevach.Riabtsev at zoran.com Wed Feb 11 02:15:28 2009 From: Shevach.Riabtsev at zoran.com (Shevach Riabtsev) Date: Wed, 11 Feb 2009 09:15:28 +0200 Subject: [Mp4-tech] h.264 stream analyzer Message-ID: <91C4B16D6D58C541BF2F841D27F82536F88DFE@zmlex.zml.zoran.com> Hi Vinayaka Generally speaking blockiness is a typical visual artifact which is observable (an vary annoying) on smooth regions provided that an image is coded with large Qp. H.264 provides a tool 'deblocking' which is tailored to minimize blockiness visual artifacts. Perhaps the deblocking is OFF in your stream or bad adjusted. Anyway a good post-processor (at display stage) should cope with blockiness artifacts. I would like to recommend a paper related to blockiness artifacts: "A SIMPLE ALGORITH FOR THE REDUCTION OF BLOCKING ARTIFACTS IN IMAGES AND ITS IMPLEMENTATION", Roberto Castagno, Stefan Marsi and Giovanni Ramponi, IEEE Transactions on Consumer Electronics, Vol. 44, No. 3, AUGUST 1998 As for flickering artifacts, flickering can be resulted either 1) by bad-adjusted gamma correction on your TV display, for refer pls. read an excellent article: "Flicker Reduction in MPEG-2 Video by Post-Processing", Naohiro Hara, Atsuro Ichigaya, Masaaki Kurozumi, Yukihiro Nishida, and Yoshimichi Ohtsuka, IEEE Transactions on Consumer Electronics, Vol. 51, No. 1, FEBRUARY 2005 2) by Rate Control. Indeed, Rate Control prior encoding of a picture allocates target bit-budget. If the bit-budget is overran at the end of picture, Rate Control increases Qp magnitudes. As a result visual quality of bottom part of image might be significantly deteriorated versus the quality of previous pictures. This phenomenon is observed as distortion flicker. Regards > Hi experts, > Why does blocky image occur in H.264 codec,and also in some image the bottom > of the image will be flickering(on and off) >Awaiting for your reply, >Regards >Vinayaka -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090211/991235e0/attachment.html From smr_soroush at yahoo.com Wed Feb 11 12:24:11 2009 From: smr_soroush at yahoo.com (S.M.Reza Soroush) Date: Wed, 11 Feb 2009 09:24:11 -0800 (PST) Subject: [Mp4-tech] JMVM Message-ID: <125891.35761.qm@web35702.mail.mud.yahoo.com> Dear Experts, ? Is there any downloadable reference software for Joint Multiview Video Model(JMVM) ? ? Best, ? Soroush. ? -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090211/15ccd76d/attachment.html From mrison at hotmail.com Wed Feb 11 14:17:53 2009 From: mrison at hotmail.com (Mark RISON) Date: Wed, 11 Feb 2009 19:17:53 +0000 Subject: [Mp4-tech] Support for MP3 data in MP4 files Message-ID: As I understand it, there are two ways to store MP3 data in MP4 files: - Set the objectTypeIndication in the DecoderConfigDescriptor to 0x69 or 0x6b; then there's no DecoderSpecificInfo (though the spec doesn't *quite* state that for 0x6b == 11172-3...) and the media data is just an audio_sequence(), complete with header()s - Set the objectTypeIndication in the DecoderConfigDescriptor to 0x40 and then set the audioObjectType in the DecoderSpecificInfo to 34 (suitably escaped); the media data is an audio_sequence() whose header()s' syncword field is reused to carry the frame length Is that right? If so, are either of these in actual use anywhere? I can find some files using the second method in the conformance test suite, which suggests -- though does not prove -- it may be in actual use, but I can't find any files using the first method in the conformance test suite, which suggests -- though does not prove -- that no-one uses it (indeed, I can't find any files with an objectTypeIndication other than 0x40 in the conformance test suite). Mark -- CPC/IP - A TCP/IP stack for Amstrad CPCs -- http://www.cepece.info/cpcip/ "Z88 vs CPC? Christ. How did we miss that platform war?" -- http://www.ntk.net/index.cgi?b=02000-01-28&l=111#l _________________________________________________________________ Make a mini you and download it into Windows Live Messenger http://clk.atdmt.com/UKM/go/111354029/direct/01/ From mrison at hotmail.com Wed Feb 11 14:19:04 2009 From: mrison at hotmail.com (Mark RISON) Date: Wed, 11 Feb 2009 19:19:04 +0000 Subject: [Mp4-tech] Problems with buffer fullness + alignment in ADIF files In-Reply-To: <4991D2EA.3060905@iis.fraunhofer.de> References: <4990F235.4060108@iis.fraunhofer.de> <4991D2EA.3060905@iis.fraunhofer.de> Message-ID: > Just curious: do you have a certain application where you need ADIF. Nothing more than "it's a ticklist item", to be honest! Mark -- CPC/IP - A TCP/IP stack for Amstrad CPCs -- http://www.cepece.info/cpcip/ "Z88 vs CPC? Christ. How did we miss that platform war?" -- http://www.ntk.net/index.cgi?b=02000-01-28&l=111#l _________________________________________________________________ Win New York holidays with Kellogg?s & Live Search http://clk.atdmt.com/UKM/go/111354033/direct/01/ From vcpawate at gmail.com Wed Feb 11 04:06:01 2009 From: vcpawate at gmail.com (Vinayaka Pawate) Date: Wed, 11 Feb 2009 14:36:01 +0530 Subject: [Mp4-tech] h.264 stream analyzer In-Reply-To: <91C4B16D6D58C541BF2F841D27F82536F88DFE@zmlex.zml.zoran.com> References: <91C4B16D6D58C541BF2F841D27F82536F88DFE@zmlex.zml.zoran.com> Message-ID: Hi Shevach, Very happy to to see ur reply, Can you suggest me tool which is very useful in the analysis and learning the codec Can you suggest me any good books on the internals of the video codec Regards Vinayaka On Wed, Feb 11, 2009 at 12:45 PM, Shevach Riabtsev < Shevach.Riabtsev at zoran.com> wrote: > Hi Vinayaka > > > > Generally speaking blockiness is a typical visual artifact which is observable (an vary annoying) on smooth regions provided that an image is coded with large Qp. H.264 provides a tool 'deblocking' which is tailored to minimize blockiness visual artifacts. Perhaps the deblocking is OFF in your stream or bad adjusted. Anyway a good post-processor (at display stage) should cope with blockiness artifacts. > > I would like to recommend a paper related to blockiness artifacts: > > "A SIMPLE ALGORITH FOR THE REDUCTION OF BLOCKING ARTIFACTS IN IMAGES AND ITS IMPLEMENTATION", Roberto Castagno, Stefan Marsi and Giovanni Ramponi, > > IEEE Transactions on Consumer Electronics, Vol. 44, No. 3, AUGUST 1998 > > > > > > As for flickering artifacts, flickering can be resulted either > > 1) by bad-adjusted gamma correction on your TV display, for refer pls. read an excellent article: > > "Flicker Reduction in MPEG-2 Video by Post-Processing", Naohiro Hara, Atsuro Ichigaya, Masaaki Kurozumi, Yukihiro Nishida, and Yoshimichi Ohtsuka, > > IEEE Transactions on Consumer Electronics, Vol. 51, No. 1, FEBRUARY 2005 > > > > 2) by Rate Control. Indeed, Rate Control prior encoding of a picture allocates target bit-budget. If the bit-budget is overran at the end of picture, Rate Control increases Qp magnitudes. As a result visual quality of bottom part of image might be significantly deteriorated versus the quality of previous pictures. This phenomenon is observed as distortion flicker. > > > > Regards > > > > > > > > > > > Hi experts, > > > Why does blocky image occur in H.264 codec,and also in some image the bottom > > > of the image will be flickering(on and off) > > > > >Awaiting for your reply, > > > > >Regards > > >Vinayaka > > > > _______________________________________________ > NOTE: Please use clear subject lines for your posts. Include [audio, > [video], [systems], [general] or another apppropriate identifier to indicate > the type of question you have. > > Note: Conduct on the mailing list is subject to the Antitrust guidelines > found at > http://www.mpegif.org/public/documents/vault/mp-out-30042-Antitrust.php > -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090211/b82313e1/attachment-0001.html From Purvin.Pandit at harmonicinc.com Wed Feb 11 13:00:16 2009 From: Purvin.Pandit at harmonicinc.com (Purvin Pandit) Date: Wed, 11 Feb 2009 10:00:16 -0800 Subject: [Mp4-tech] JMVM In-Reply-To: <125891.35761.qm@web35702.mail.mud.yahoo.com> References: <125891.35761.qm@web35702.mail.mud.yahoo.com> Message-ID: <66FE56AFC6045245B9E894BC5E4344B808DFB32C@SV-EXCH.hlit.local> Dear Soroush Here is information on how to get JMVM but please note that JMVM is not maintained any more. For the latest software for MVC please check out "jmvc". authentication: Pserver host address: garcon.ient.rwth-aachen.de path: /cvs/jvt user name: Jvtuser password: jvt.Amd.2 module name: jmvm Best regards, -Purvin From: mp4-tech-bounces at lists.mpegif.org [mailto:mp4-tech-bounces at lists.mpegif.org] On Behalf Of S.M.Reza Soroush Sent: Wednesday, February 11, 2009 12:24 PM To: mp4-tech at lists.mpegif.org Subject: [Mp4-tech] JMVM Dear Experts, Is there any downloadable reference software for Joint Multiview Video Model(JMVM) ? Best, Soroush. -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090211/42ac222b/attachment-0001.html From bhaskar.sherigar at broadcom.com Wed Feb 11 22:17:48 2009 From: bhaskar.sherigar at broadcom.com (Bhaskar Sherigar Mala Sherigar) Date: Wed, 11 Feb 2009 19:17:48 -0800 Subject: [Mp4-tech] h.264 stream analyzer In-Reply-To: References: <91C4B16D6D58C541BF2F841D27F82536F88DFE@zmlex.zml.zoran.com> Message-ID: Hi Vinayaka, There are many commercial tools available. The one that I have used is http://www.interrasystems.com/dmg/analyzers.html Regards, Bhaskar ________________________________ From: mp4-tech-bounces at lists.mpegif.org [mailto:mp4-tech-bounces at lists.mpegif.org] On Behalf Of Vinayaka Pawate Sent: Wednesday, February 11, 2009 4:06 AM To: Shevach Riabtsev Cc: mp4-tech at lists.mpegif.org Subject: Re: [Mp4-tech] h.264 stream analyzer Hi Shevach, Very happy to to see ur reply, Can you suggest me tool which is very useful in the analysis and learning the codec Can you suggest me any good books on the internals of the video codec Regards Vinayaka On Wed, Feb 11, 2009 at 12:45 PM, Shevach Riabtsev > wrote: Hi Vinayaka Generally speaking blockiness is a typical visual artifact which is observable (an vary annoying) on smooth regions provided that an image is coded with large Qp. H.264 provides a tool 'deblocking' which is tailored to minimize blockiness visual artifacts. Perhaps the deblocking is OFF in your stream or bad adjusted. Anyway a good post-processor (at display stage) should cope with blockiness artifacts. I would like to recommend a paper related to blockiness artifacts: "A SIMPLE ALGORITH FOR THE REDUCTION OF BLOCKING ARTIFACTS IN IMAGES AND ITS IMPLEMENTATION", Roberto Castagno, Stefan Marsi and Giovanni Ramponi, IEEE Transactions on Consumer Electronics, Vol. 44, No. 3, AUGUST 1998 As for flickering artifacts, flickering can be resulted either 1) by bad-adjusted gamma correction on your TV display, for refer pls. read an excellent article: "Flicker Reduction in MPEG-2 Video by Post-Processing", Naohiro Hara, Atsuro Ichigaya, Masaaki Kurozumi, Yukihiro Nishida, and Yoshimichi Ohtsuka, IEEE Transactions on Consumer Electronics, Vol. 51, No. 1, FEBRUARY 2005 2) by Rate Control. Indeed, Rate Control prior encoding of a picture allocates target bit-budget. If the bit-budget is overran at the end of picture, Rate Control increases Qp magnitudes. As a result visual quality of bottom part of image might be significantly deteriorated versus the quality of previous pictures. This phenomenon is observed as distortion flicker. Regards > Hi experts, > Why does blocky image occur in H.264 codec,and also in some image the bottom > of the image will be flickering(on and off) >Awaiting for your reply, >Regards >Vinayaka _______________________________________________ NOTE: Please use clear subject lines for your posts. Include [audio, [video], [systems], [general] or another apppropriate identifier to indicate the type of question you have. Note: Conduct on the mailing list is subject to the Antitrust guidelines found at http://www.mpegif.org/public/documents/vault/mp-out-30042-Antitrust.php -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090211/0dd9893f/attachment.html From arjun_majumdar at rediffmail.com Thu Feb 12 13:33:23 2009 From: arjun_majumdar at rediffmail.com (arjun majumdar) Date: 12 Feb 2009 18:33:23 -0000 Subject: [Mp4-tech] Reference C Model Message-ID: <20090212183323.46708.qmail@f6mail-144-203.rediffmail.com> Hi Garry Sir, We are implementing H.264 decoder. Is there any other free encoder reference model other than the JM model (provided by the standard body) for verification purpose? And for conformance testing we need some error bit streams, any useful links for the same? Regards, Arjun Majumdar -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090212/2503d930/attachment.html From garysull at windows.microsoft.com Thu Feb 12 14:34:01 2009 From: garysull at windows.microsoft.com (Gary Sullivan) Date: Thu, 12 Feb 2009 11:34:01 -0800 Subject: [Mp4-tech] Reference C Model In-Reply-To: <20090212183323.46708.qmail@f6mail-144-203.rediffmail.com> References: <20090212183323.46708.qmail@f6mail-144-203.rediffmail.com> Message-ID: <406D6FEFCBB98643A34170C59E1ABEF31F7AACFACB@NA-EXMSG-W601.wingroup.windeploy.ntdev.microsoft.com> Arjun Majumdar et al, Possibly the JSVM encoder may also be useful for that purpose (access info below). I'm not familiar with what is available from other sources than the standardization activities. As for bitstreams with errors, I'm not aware of a suite of bitstreams for that purpose. Best Regards, Gary Sullivan Accessing an up-to-date version of the JSVM software In order to keep track of the changes in software development and to always provide an up-to-date version of the JSVM software, a CVS server for the JSVM software has been set up at the Rheinisch-Westf?lische Technische Hochschule (RWTH) Aachen. The CVS server can be accessed using TortoiseCVS, WinCVS, or any other CVS client. The server is configured to allow read access only using the parameters specified below. Write access to the JSVM software server is restricted to the JSVM software coordinators group. CVS access parameters authentication: pserver host address: garcon.ient.rwth-aachen.de path: /cvs/jvt user name: jvtuser password: jvt.Amd.2 module name: jsvm or jsvm_red Example 1 shows how the JSVM software can be accessed by using a command line CVS client. Example 1: Accessing the JSVM software with a command line CVS client cvs -d :pserver:jvtuser:jvt.Amd.2 at garcon.ient.rwth-aachen.de:/cvs/jvt login cvs -d :pserver:jvtuser at garcon.ient.rwth-aachen.de:/cvs/jvt checkout jsvm In Example 2, it is shown how a specific JSVM software version - specified by a tag (JSVM_9_8 in Example 2) - can be obtained using a command line CVS client. Note that co represents an abbreviation for the command checkout, which was used in Example 1. Example 2: Accessing the JSVM software version with the tag JSVM_9_8 with a command line CVS client cvs -d :pserver:jvtuser:jvt.Amd.2 at garcon.ient.rwth-aachen.de:/cvs/jvt login cvs -d :pserver:jvtuser at garcon.ient.rwth-aachen.de:/cvs/jvt co -r JSVM_9_8 jsvm It is possible to checkout only a reduced JSVM software package by using the module name jsvm_red instead of jsvm. In this case, the directories JSVM0-config-sample and MVC-Configs are ommitted in the checkout, see Example 3. Example 3: Accessing the JSVM software without the JSVM0 and MVC directories. cvs -d :pserver:jvtuser:jvt.Amd.2 at garcon.ient.rwth-aachen.de:/cvs/jvt login cvs -d :pserver:jvtuser at garcon.ient.rwth-aachen.de:/cvs/jvt co jsvm_red The CVS repository includes a JSVM software manual, which provides further information on the JSVM software. Best Regards, Gary ________________________________ From: mp4-tech-bounces at lists.mpegif.org [mailto:mp4-tech-bounces at lists.mpegif.org] On Behalf Of arjun majumdar Sent: Thursday, February 12, 2009 10:33 AM To: mp4-tech at lists.mpegif.org Subject: [Mp4-tech] Reference C Model Hi Garry Sir, We are implementing H.264 decoder. Is there any other free encoder reference model other than the JM model (provided by the standard body) for verification purpose? And for conformance testing we need some error bit streams, any useful links for the same? Regards, Arjun Majumdar [http://imadworks.rediff.com/cgi-bin/AdWorks/adimage.cgi/2705639_2677138/creative_2680797.gif] -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090212/1a47301b/attachment.html From alex.converse at gmail.com Thu Feb 12 23:12:08 2009 From: alex.converse at gmail.com (Alex Converse) Date: Thu, 12 Feb 2009 23:12:08 -0500 Subject: [Mp4-tech] [RefSoft] Double free in adif2mp4/libisomediafile Message-ID: Dear Experts, When converting am00_48.mp4 to adts and back again with adif2mp4 I'm running into a double free in libisomediafile. I'm using adif2mp4 from c043465_ISO_IEC_14496-5_2001_Amd_10_2007_Reference_Software.zip and libisomediafile from c045527_ISO_IEC_14496-5_2001_Amd_12_2007_Reference_Software.zip as these seem to be the newest versions publicly available. I'm simply running adif2mp4 am00_48.mp4 am00_48.adts; adif2mp4 am00_48.adts out.mp4 I built a 32 bit version of the tool (as the source does not seem LP64 safe) with gcc-4.3.2 on Ubuntu 8.10 amd64. Any advice would be welcome. Debug output follows: (gdb) run am00_48.adts out.mp4 Starting program: /home/alex/Projects/ffmpeg/14496-5/x86/C043465e_Electronic_inserts/audio/natural/bin/mp4mcDec/Linux_isomp4_sbr_ps_AFsp_gcc_O0d/adif2mp4 am00_48.adts out.mp4 input has variable bitrate creating output bitstream with variable bitrate decoderBufferSize: 0 channels... setting to 1 channel! *** glibc detected *** /home/alex/Projects/ffmpeg/14496-5/x86/C043465e_Electronic_inserts/audio/natural/bin/mp4mcDec/Linux_isomp4_sbr_ps_AFsp_gcc_O0d/adif2mp4: double free or corruption (!prev): 0x08cce1d8 *** ======= Backtrace: ========= /lib32/libc.so.6[0xf7d7c044] /lib32/libc.so.6(cfree+0x96)[0xf7d7e0d6] /home/alex/Projects/ffmpeg/14496-5/x86/C043465e_Electronic_inserts/audio/natural/bin/mp4mcDec/Linux_isomp4_sbr_ps_AFsp_gcc_O0d/adif2mp4[0x808d054] /home/alex/Projects/ffmpeg/14496-5/x86/C043465e_Electronic_inserts/audio/natural/bin/mp4mcDec/Linux_isomp4_sbr_ps_AFsp_gcc_O0d/adif2mp4[0x808d067] /home/alex/Projects/ffmpeg/14496-5/x86/C043465e_Electronic_inserts/audio/natural/bin/mp4mcDec/Linux_isomp4_sbr_ps_AFsp_gcc_O0d/adif2mp4[0x80898aa] /home/alex/Projects/ffmpeg/14496-5/x86/C043465e_Electronic_inserts/audio/natural/bin/mp4mcDec/Linux_isomp4_sbr_ps_AFsp_gcc_O0d/adif2mp4[0x8088393] /home/alex/Projects/ffmpeg/14496-5/x86/C043465e_Electronic_inserts/audio/natural/bin/mp4mcDec/Linux_isomp4_sbr_ps_AFsp_gcc_O0d/adif2mp4[0x8084f9e] /home/alex/Projects/ffmpeg/14496-5/x86/C043465e_Electronic_inserts/audio/natural/bin/mp4mcDec/Linux_isomp4_sbr_ps_AFsp_gcc_O0d/adif2mp4[0x8084ffe] /home/alex/Projects/ffmpeg/14496-5/x86/C043465e_Electronic_inserts/audio/natural/bin/mp4mcDec/Linux_isomp4_sbr_ps_AFsp_gcc_O0d/adif2mp4[0x804e291] /home/alex/Projects/ffmpeg/14496-5/x86/C043465e_Electronic_inserts/audio/natural/bin/mp4mcDec/Linux_isomp4_sbr_ps_AFsp_gcc_O0d/adif2mp4[0x804b9e1] /lib32/libc.so.6(__libc_start_main+0xe5)[0xf7d22685] /home/alex/Projects/ffmpeg/14496-5/x86/C043465e_Electronic_inserts/audio/natural/bin/mp4mcDec/Linux_isomp4_sbr_ps_AFsp_gcc_O0d/adif2mp4[0x8049021] ======= Memory map: ======== 08048000-080af000 r-xp 00000000 08:07 12059035 /home/alex/Projects/ffmpeg/14496-5/x86/C043465e_Electronic_inserts/audio/natural/bin/mp4mcDec/Linux_isomp4_sbr_ps_AFsp_gcc_O0d/adif2mp4 080af000-080b0000 r--p 00066000 08:07 12059035 /home/alex/Projects/ffmpeg/14496-5/x86/C043465e_Electronic_inserts/audio/natural/bin/mp4mcDec/Linux_isomp4_sbr_ps_AFsp_gcc_O0d/adif2mp4 080b0000-080b8000 rw-p 00067000 08:07 12059035 /home/alex/Projects/ffmpeg/14496-5/x86/C043465e_Electronic_inserts/audio/natural/bin/mp4mcDec/Linux_isomp4_sbr_ps_AFsp_gcc_O0d/adif2mp4 080b8000-0834f000 rw-p 080b8000 00:00 0 083af000-08ce2000 rw-p 083af000 00:00 0 [heap] f7b00000-f7b21000 rw-p f7b00000 00:00 0 f7b21000-f7c00000 ---p f7b21000 00:00 0 f7cca000-f7d0c000 rw-p f7cca000 00:00 0 f7d0c000-f7e64000 r-xp 00000000 08:05 272455 /lib32/libc-2.8.90.so f7e64000-f7e66000 r--p 00158000 08:05 272455 /lib32/libc-2.8.90.so f7e66000-f7e67000 rw-p 0015a000 08:05 272455 /lib32/libc-2.8.90.so f7e67000-f7e6a000 rw-p f7e67000 00:00 0 f7e6a000-f7e77000 r-xp 00000000 08:05 133628 /usr/lib32/libgcc_s.so.1 f7e77000-f7e78000 r--p 0000c000 08:05 133628 /usr/lib32/libgcc_s.so.1 f7e78000-f7e79000 rw-p 0000d000 08:05 133628 /usr/lib32/libgcc_s.so.1 f7e79000-f7e7a000 rw-p f7e79000 00:00 0 f7e7a000-f7e9e000 r-xp 00000000 08:05 272461 /lib32/libm-2.8.90.so f7e9e000-f7e9f000 r--p 00023000 08:05 272461 /lib32/libm-2.8.90.so f7e9f000-f7ea0000 rw-p 00024000 08:05 272461 /lib32/libm-2.8.90.so f7ea0000-f7f83000 r-xp 00000000 08:05 133630 /usr/lib32/libstdc++.so.6.0.10 f7f83000-f7f84000 ---p 000e3000 08:05 133630 /usr/lib32/libstdc++.so.6.0.10 f7f84000-f7f88000 r--p 000e3000 08:05 133630 /usr/lib32/libstdc++.so.6.0.10 f7f88000-f7f89000 rw-p 000e7000 08:05 133630 /usr/lib32/libstdc++.so.6.0.10 f7f89000-f7f8f000 rw-p f7f89000 00:00 0 f7fab000-f7fae000 rw-p f7fab000 00:00 0 f7fae000-f7faf000 r-xp f7fae000 00:00 0 [vdso] f7faf000-f7fcd000 r-xp 00000000 08:05 272450 /lib32/ld-2.8.90.so f7fcd000-f7fce000 r--p 0001d000 08:05 272450 /lib32/ld-2.8.90.so f7fce000-f7fcf000 rw-p 0001e000 08:05 272450 /lib32/ld-2.8.90.so ffdb9000-ffdce000 rw-p 7ffffffea000 00:00 0 [stack] Program received signal SIGABRT, Aborted. 0xf7fae430 in __kernel_vsyscall () (gdb) bt #0 0xf7fae430 in __kernel_vsyscall () #1 0xf7d37b70 in raise () from /lib32/libc.so.6 #2 0xf7d39538 in abort () from /lib32/libc.so.6 #3 0xf7d75d5d in ?? () from /lib32/libc.so.6 #4 0xf7d7c044 in ?? () from /lib32/libc.so.6 #5 0xf7d7e0d6 in free () from /lib32/libc.so.6 #6 0x0808d054 in baseAtomDestroy (self=0x8cce1d8) at ../../src/MP4Atoms.c:46 #7 0x0808d067 in fullAtomDestroy (self=0x8cce1d8) at ../../src/MP4Atoms.c:90 #8 0x080898aa in destroy (s=0x0) at ../../src/ESDAtom.c:46 #9 0x08088393 in destroy (s=0x8cce140) at ../../src/AudioSampleEntryAtom.c:39 #10 0x08084f9e in MP4NewSampleDescriptionWithOCRAssociation (theTrack=0x8ccd610, sampleDescriptionH=0x8cce120, dataReferenceIndex=1, objectTypeIndication=64, streamType=5, decoderBufferSize=768, maxBitrate=0, avgBitrate=0, decoderSpecificInfoH=0x8cccd08, theOCRESID=0) at ../../src/ISOSampleDescriptions.c:225 #11 0x08084ffe in MP4NewSampleDescription (theTrack=0x8ccd610, sampleDescriptionH=0x8cce120, dataReferenceIndex=1, objectTypeIndication=64, streamType=5, decoderBufferSize=768, maxBitrate=0, avgBitrate=0, decoderSpecificInfoH=0x8cccd08) at ../../src/ISOSampleDescriptions.c:104 #12 0x0804e291 in bitoutput_openFile (filename=0xffdcd660 "out.mp4", format=0, mip=0x8263bc0, maxBitrate=-1, avgBitrate=0, sbrPresentInFillElem=0, signallingType=2, sbrPresentFlag=1, downSampledSbr=0, psSignallingType=0, psPresentFlag=1) at src/bitoutput.c:1078 #13 0x0804b9e1 in main (argc=Cannot access memory at address 0x0 ) at src/adif2mp4.c:866 Thanks, Alex Converse From zhengyuan.quan at gmail.com Fri Feb 13 03:25:02 2009 From: zhengyuan.quan at gmail.com (Andy Quan) Date: Fri, 13 Feb 2009 16:25:02 +0800 Subject: [Mp4-tech] [MPEG4 ASP]container syntax about video codec Message-ID: Hi, Anybody can tell me in which document I can find the syntax/structure used in MP4 container describing MPEG4 ASP codec information? I'd appreciate if you can provide the full name of that spec so that I can find it on ISO website. I need this information to check/modify some parser capability of handling MPEG4 ASP stream from MP4 container. Thanks in advance. -- Regards, Andy Quan -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090213/c1884e01/attachment-0001.html From amiri1982 at yahoo.com Fri Feb 13 12:31:01 2009 From: amiri1982 at yahoo.com (Mohsen Amiri) Date: Fri, 13 Feb 2009 09:31:01 -0800 (PST) Subject: [Mp4-tech] [MPEG4 ASP]container syntax about video codec In-Reply-To: Message-ID: <129767.8662.qm@web43138.mail.sp1.yahoo.com> I am also looking for the same thing (MP4 and H.264). I hope someone can suggest a useful documentation. --- On Fri, 2/13/09, Andy Quan wrote: From: Andy Quan Subject: [Mp4-tech] [MPEG4 ASP]container syntax about video codec To: mp4-tech at lists.mpegif.org Date: Friday, February 13, 2009, 1:25 AM Hi, Anybody can tell me?in which document?I can find the syntax/structure used in MP4 container describing?MPEG4 ASP codec?information? I'd appreciate if you can provide the full name of that spec so that I can find it on ISO website. I need this information to check/modify some parser capability of handling MPEG4 ASP stream from MP4 container. Thanks in advance. -- Regards, Andy Quan _______________________________________________ NOTE: Please use clear subject lines for your posts. Include [audio, [video], [systems], [general] or another apppropriate identifier to indicate the type of question you have. Note: Conduct on the mailing list is subject to the Antitrust guidelines found at http://www.mpegif.org/public/documents/vault/mp-out-30042-Antitrust.php -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090213/ff3f45ba/attachment.html From qungu at sbcglobal.net Sat Feb 14 04:31:50 2009 From: qungu at sbcglobal.net (Qun Gu) Date: Sat, 14 Feb 2009 01:31:50 -0800 (PST) Subject: [Mp4-tech] Reference lists of multiple slices per picture for baseline bitstreams Message-ID: <280244.66974.qm@web82201.mail.mud.yahoo.com> Hi, I am implementing a H.264 baseline decoder. I wonder for a baseline bitstream (I/P) with multiple slices per picture, is it legal that the reference lists of each slice of a same picture vary? How about the real world? Thanks, Qun From alex.converse at gmail.com Sun Feb 15 21:32:34 2009 From: alex.converse at gmail.com (Alex Converse) Date: Sun, 15 Feb 2009 21:32:34 -0500 Subject: [Mp4-tech] Reference C Model In-Reply-To: <20090212183323.46708.qmail@f6mail-144-203.rediffmail.com> References: <20090212183323.46708.qmail@f6mail-144-203.rediffmail.com> Message-ID: On Thu, Feb 12, 2009 at 1:33 PM, arjun majumdar wrote: > Hi Garry Sir, > I'm not Gary but I have a few ideas for you. > We are implementing H.264 decoder. Is there any other free encoder reference > model other than the JM model (provided by the standard body) for > verification purpose? > If you are looking for a modifiable encoder for the purpose of creating streams you may want to check out x264. http://www.videolan.org/developers/x264.html > And for conformance testing we need some error bit streams, any useful links > for the same? > I don't know of any but you can create your own error streams by running the conformance streams though an input fuzzer like zzuf. http://caca.zoy.org/wiki/zzuf Regards, Alex Converse From dmitriy at graphics.cs.msu.ru Mon Feb 16 04:23:02 2009 From: dmitriy at graphics.cs.msu.ru (Dmitriy Vatolin) Date: Mon, 16 Feb 2009 12:23:02 +0300 Subject: [Mp4-tech] CALL FOR MPEG4-AVC/H.264 CODECS COMPARISON Message-ID: <757444088.20090216122302@graphics.cs.msu.ru> Dear Experts, Please forward this information to video codecs developers! Moscow State University Graphics & Multimedia Laboratory starts next 5-th H.264 codecs comparison. There is some information about it below. Let us know if any questions. Main issues: * COMPARISON WILL BE SOON! (Sorry for delay). * We are planning to include new codecs that did not participate in previous comparison by chosing presets for them ourself. We are hope to include more codecs into this comparison. =========================================================================== CALL FOR MPEG4-AVC/H.264 CODECS Fifth H.264 video codec comparison For practical researchers and developers in the field of high-end video compression =========================================================================== Scope of Test ------------- * Encoding time, speed/quality analysis * Objective quality measurements (PSNR, SSIM, Average Advantage, etc.) * Analysis of averaged objective results * Leaders in different areas * Special analysis of codec parts Important Dates --------------- February, 20 - Deadline for preliminary receipt of a H.264 codecs February, 27 - Deadline for receipt of a H.264 codec with required presets March, 16 - Deadline for settling technical problems with codec?s functioning April, 7 - Draft version of report that will be sent to all participants April, 14 - Deadline for reception of comments to the draft April, 28 - Comparison report release Enhancements in comparison to Previous H.264/AVC Comparison ----------------------------------------------------------- * We are planning to include new codecs that did not participate in previous comparison by chosing presets for them ourself. For that task we will use option analysis. Anyway we will be glad to have a direct contact with codec developers. The main benefit of direct participation for developers is receiving Pro version of comparison free of charge. * Codecs options analysis (see example at Options Analysis of MPEG-4 AVC/H.264 Codec x264) http://compression.ru/video/codec_comparison/x264_options_analysis_08_en.html * New type of special analysis for codecs * Using natural sequences' special modification * Using synthetic sequences * Separate analysis of codecs main subsystems * New sequences Developer Deliverables ---------------------- The following deliverables should be provided by each developer: * Codec files (CLI executable file is preferable) * Short description of codec parameters * Codec's presets with mentioning what H.264/AVC profiles are used The full text of Call for Codecs is available at http://compression.ru/video/codec_comparison/call_for_codecs_09.html Variants of Participation ------------------------- There are two variants for companies to participate in our comparison: 1. Participation for free. All results of your codec will be published, except special cases of measurements problems due to codec instability. 2. Private participation. A special report will be prepared only for your company. This report contains: * Your codec results and all material from the free version * Special additional analysis of your codec If you are interested in the private participation, please contact us for details. Useful Links ------------ * Fourth Annual MSU MPEG-4 AVC/H.264 Video Codec Comparison http://compression.ru/video/codec_comparison/mpeg-4_avc_h264_2007_en.html * Options Analysis of MPEG-4 AVC/H.264 Codec x264 http://compression.ru/video/codec_comparison/x264_options_analysis_08_en.html * Subjective Comparison of Modern Video Codecs http://compression.ru/video/codec_comparison/subjective_codecs_comparison_en.html Sincerely yours, Dr. Vatolin From Ajay.Gudi at kpitcummins.com Tue Feb 17 00:45:02 2009 From: Ajay.Gudi at kpitcummins.com (Ajay Gudi) Date: Tue, 17 Feb 2009 11:15:02 +0530 Subject: [Mp4-tech] Regarding C model of H.264 Message-ID: Dear Garry Sir, 1. We are Implementing H.264 Decoder IP for Baseline Profile. For Verification purpose we are using the standard C Model H.264/AVC JM Reference Software . We want to compare our RTL outputs of different blocks with the C model outputs of different blocks. But I am not getting what are all the different block outputs like Inverse quantization block, Inverse Transformation block etc ... in the C model. So can you kindly send me the flow of the C Model of the H.264 indicating each block outputs so that I can use these outputs for Verification purpose. Awaiting your reply Ajay Gudi -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090217/ad038a26/attachment.html From hltvy at selab.hcmuns.edu.vn Tue Feb 17 02:27:18 2009 From: hltvy at selab.hcmuns.edu.vn (Vy Hua Le Thanh) Date: Tue, 17 Feb 2009 14:27:18 +0700 Subject: [Mp4-tech] OpenMAX DL Message-ID: <6ae2dff60902162327v265c30abk3861ba3a5ec35cba@mail.gmail.com> Hi, I'm implementing a H.264 decoder based on OpenMAX DL. I'd like to re-use the parser of ffmpeg. But unfortunately, it's too ambiguous for me to understand the parameters of OpenMAX functions, and ffmpeg. Such as, in an ffmpeg tutorial while(av_read_frame (pFormatCtx, &packet)>=0) { // Is this a packet from the video stream? if(packet.stream_index==videoStream) { // Decode video frame avcodec_decode_video (pCodecCtx, pFrame, &frameFinished, packet.data, packet.size); // Did we get a video frame? // Do something with decoded Frame } I'm not sure what "packet.data" is exactly here, is it a complete encoded frame, and now we need to parse its header? While all of input parameters of OpenMAX DL is "const OMX_U8 **ppBitStream, OMX_S32 *pOffset". I wonder what the relation between "packet.data" and "ppBitstream" should be. If you had any experience, please help me some advice. Thanks a lot, -- Best Wishes, - Thanh Vy -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090217/88151385/attachment.html From Ajay.Gudi at kpitcummins.com Tue Feb 17 03:52:29 2009 From: Ajay.Gudi at kpitcummins.com (Ajay Gudi) Date: Tue, 17 Feb 2009 14:22:29 +0530 Subject: [Mp4-tech] Reference C H.264 Model [video] Message-ID: Dear Garry Sir, 1. We are Implementing H.264 Decoder IP for Baseline Profile. For Verification purpose we are using the standard C Model H.264/AVC JM Reference Software . We want to compare our RTL outputs of different blocks with the C model outputs of different blocks. But I am not getting what are all the different block outputs like Inverse quantization block, Inverse Transformation block etc ... in the C model. So can you kindly send me the flow of the C Model of the H.264 indicating each block outputs so that I can use these outputs for Verification purpose. Awaiting your reply Ajay Gudi -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090217/ce89f996/attachment.html From samuelj at wwcoms.com Tue Feb 17 14:17:30 2009 From: samuelj at wwcoms.com (Samuel Jimenez) Date: Tue, 17 Feb 2009 20:17:30 +0100 Subject: [Mp4-tech] Regarding interlaced coding using bframes Message-ID: <75119d380902171117u29070d38v8a1e939d7e317e04@mail.gmail.com> Dear experts, my question is regarding pic_order_count and frame_num values for an interlaced coding using bframes. I am encoding a simple 7-field interlaced sequence (IPBPBPB) using a poc type 0 and not using bframes as reference. This way, the resulting coding/decoding order is supposed to be I0 P1 B2 P3 B4 P5 B6, while the display order should be I1 B2 P1 B4 P3 B6 P5. In oder to achieve this ordered sequence of fields I am setting these poc and frame_number values: POC: I0(0) P1(6) B2(4) P3(10) B4(8) P5(14) B6(12) frame_number: I0(0) P1(1) B2(2) P3(2) B4(3) P5(3) B6(4) So a I get what seems to be a proper H264 bitstream, JM decoder says it is standard compliant, but when I check the decoded fields there are not what I am expecting. I have some questions maybe you can easyly answer: 1.- JM outputs 7 completed frames, not 4 interlaced frames as I supposed it should do, which seem to be the result of interlace a decoded field with a "grey" field (with a 0x80 value in each pixel). Do you have any idea why i am getting this? this is not happening to me when I do IPP coding only. 2.- Display order is wrong, i am getting I0 P1 B2 P3 B4 P5 B6 instead of I1 B2 P1 B4 P3 B6 P5. Am I not setting the right poc and frame_number values? 3.- Coding with the reference JM encoder, I can not obtain an interlaced sequenced similar to what i am trying to decode, this is (in display order): frame 0 = (IDR, B) frame 1 = (P, B) frame 2 = (P, B) .... Can you please tell me if this is an allowed GOP structure. Thanks a lot in advance for the help provided. Regards, Samuel. -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090217/3ee2b8bb/attachment.html From Shevach.Riabtsev at zoran.com Wed Feb 18 02:09:46 2009 From: Shevach.Riabtsev at zoran.com (Shevach Riabtsev) Date: Wed, 18 Feb 2009 09:09:46 +0200 Subject: [Mp4-tech] Regarding interlaced coding using bframes Message-ID: <91C4B16D6D58C541BF2F841D27F82536F88E16@zmlex.zml.zoran.com> Dear Samuel Actually I am familiar with a similar problem (but not on JM encoder). I guess that some fields are encoded as dangling ones (i.e. non-paired). Displaying of dangling fields is not determined in the standard. A decoder can complement a dangling field to frame by inserting "gray' field. You can check my conjecture by observing bottom_field_flag syntax element for each field. I suppose that the first picture I0 is defined as top field and the next picture P1 is also determined as top field. In such case the I0 picture is dangling field. As a result it is complemented to frame by inserting a gray field. This can explain why you obtained 7 frames instead of 4 ones. Regards Shevach Riabtsev Zoran, Israel Dear experts, my question is regarding pic_order_count and frame_num values for an interlaced coding using bframes. I am encoding a simple 7-field interlaced sequence (IPBPBPB) using a poc type 0 and not using bframes as reference. This way, the resulting coding/decoding order is supposed to be I0 P1 B2 P3 B4 P5 B6, while the display order should be I1 B2 P1 B4 P3 B6 P5. In oder to achieve this ordered sequence of fields I am setting these poc and frame_number values: POC: I0(0) P1(6) B2(4) P3(10) B4(8) P5(14) B6(12) frame_number: I0(0) P1(1) B2(2) P3(2) B4(3) P5(3) B6(4) So a I get what seems to be a proper H264 bitstream, JM decoder says it is standard compliant, but when I check the decoded fields there are not what I am expecting. I have some questions maybe you can easyly answer: 1.- JM outputs 7 completed frames, not 4 interlaced frames as I supposed it should do, which seem to be the result of interlace a decoded field with a "grey" field (with a 0x80 value in each pixel). Do you have any idea why i am getting this? this is not happening to me when I do IPP coding only. 2.- Display order is wrong, i am getting I0 P1 B2 P3 B4 P5 B6 instead of I1 B2 P1 B4 P3 B6 P5. Am I not setting the right poc and frame_number values? 3.- Coding with the reference JM encoder, I can not obtain an interlaced sequenced similar to what i am trying to decode, this is (in display order): frame 0 = (IDR, B) frame 1 = (P, B) frame 2 = (P, B) .... Can you please tell me if this is an allowed GOP structure. Thanks a lot in advance for the help provided. Regards, Samuel. -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090218/5c29e59e/attachment.html From Shevach.Riabtsev at zoran.com Wed Feb 18 05:46:53 2009 From: Shevach.Riabtsev at zoran.com (Shevach Riabtsev) Date: Wed, 18 Feb 2009 12:46:53 +0200 Subject: [Mp4-tech] More: Regarding interlaced coding using bframes In-Reply-To: <91C4B16D6D58C541BF2F841D27F82536F88E16@zmlex.zml.zoran.com> References: <91C4B16D6D58C541BF2F841D27F82536F88E16@zmlex.zml.zoran.com> Message-ID: <91C4B16D6D58C541BF2F841D27F82536F88E18@zmlex.zml.zoran.com> Dear Samuel I have analyzed your scenario. The first picture is a dangling field (non-paired). Indeed, B2 can't be a complementary field of I0 since frame_num of both B2 and I0 are different. Therefore I0 is a non-paired field. The same reasoning reveals that P1 also is a dangling field. I propose the following setting of frame_num and POCs: I(0,0), P(1,0) P(6,1) P(7,1) B(2,2) B(3,2) .... Here the indexes in parenthesis (x,y) denotes: x - POC and y - frame_num >From the perspective of a decoder: frame 0 = [I(0,0), P(1,0)] frame 1 = [B(2,2), B(3,2)] frame 3 = [P(6,1), B(7,1)] ................................... Regards ________________________________ From: Shevach Riabtsev Sent: Wednesday, February 18, 2009 9:10 AM To: 'mp4-tech at lists.mpegif.org' Subject: [Mp4-tech] Regarding interlaced coding using bframes Dear Samuel Actually I am familiar with a similar problem (but not on JM encoder). I guess that some fields are encoded as dangling ones (i.e. non-paired). Displaying of dangling fields is not determined in the standard. A decoder can complement a dangling field to frame by inserting "gray' field. You can check my conjecture by observing bottom_field_flag syntax element for each field. I suppose that the first picture I0 is defined as top field and the next picture P1 is also determined as top field. In such case the I0 picture is dangling field. As a result it is complemented to frame by inserting a gray field. This can explain why you obtained 7 frames instead of 4 ones. Regards Shevach Riabtsev Zoran, Israel Dear experts, my question is regarding pic_order_count and frame_num values for an interlaced coding using bframes. I am encoding a simple 7-field interlaced sequence (IPBPBPB) using a poc type 0 and not using bframes as reference. This way, the resulting coding/decoding order is supposed to be I0 P1 B2 P3 B4 P5 B6, while the display order should be I1 B2 P1 B4 P3 B6 P5. In oder to achieve this ordered sequence of fields I am setting these poc and frame_number values: POC: I0(0) P1(6) B2(4) P3(10) B4(8) P5(14) B6(12) frame_number: I0(0) P1(1) B2(2) P3(2) B4(3) P5(3) B6(4) So a I get what seems to be a proper H264 bitstream, JM decoder says it is standard compliant, but when I check the decoded fields there are not what I am expecting. I have some questions maybe you can easyly answer: 1.- JM outputs 7 completed frames, not 4 interlaced frames as I supposed it should do, which seem to be the result of interlace a decoded field with a "grey" field (with a 0x80 value in each pixel). Do you have any idea why i am getting this? this is not happening to me when I do IPP coding only. 2.- Display order is wrong, i am getting I0 P1 B2 P3 B4 P5 B6 instead of I1 B2 P1 B4 P3 B6 P5. Am I not setting the right poc and frame_number values? 3.- Coding with the reference JM encoder, I can not obtain an interlaced sequenced similar to what i am trying to decode, this is (in display order): frame 0 = (IDR, B) frame 1 = (P, B) frame 2 = (P, B) .... Can you please tell me if this is an allowed GOP structure. Thanks a lot in advance for the help provided. Regards, Samuel. -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090218/a0913a55/attachment-0001.html From ralph.sperschneider at iis.fraunhofer.de Wed Feb 18 08:16:40 2009 From: ralph.sperschneider at iis.fraunhofer.de (Ralph Sperschneider) Date: Wed, 18 Feb 2009 14:16:40 +0100 Subject: [Mp4-tech] mp3 conformance file? (Danijel Domazet) In-Reply-To: <0C35CA0D6B55A5469D3C6DB99A6E5BF3024A32@srv-mail-02.actions.com.cn> References: <200802121708.m1CH7YAi003761@lists1.magma.ca> <0C35CA0D6B55A5469D3C6DB99A6E5BF3024A32@srv-mail-02.actions.com.cn> Message-ID: <499C0A38.2000903@iis.fraunhofer.de> ?????? wrote: > > The MPEG1 Audio comformance test files are located at: > ftp://ftp.tnt.uni-hannover.de/pub/MPEG/audio/mpeg1/compliance/ > > A more up-to-date source is ftp://mpaudconf:adif2mp4 at ftp.iis.fraunhofer.de/ There you are supposed to find _all_ MPEG Audio conformance sequences (with the exception of MPEG-7 Audio, not sure if there even exist any), and all updates etc. will become available here. Ralph -- Dipl.-Ing. Ralph Sperschneider | Phone: +49 9131 776 6167 Fraunhofer IIS | Fax: +49 9131 776 6099 Am Wolfsmantel 33 | mailto:ralph.sperschneider at iis.fraunhofer.de D 91058 Erlangen | http://www.iis.fraunhofer.de/amm/ From devilal at gmail.com Wed Feb 18 07:32:01 2009 From: devilal at gmail.com (Devilal) Date: Wed, 18 Feb 2009 18:02:01 +0530 Subject: [Mp4-tech] [Audio] AAC Encoder -- TNS Reflection Coefficients Quantization Message-ID: Dear Experts,I am working on AAC Encoder. I started with ISO code and trying to make it a FIXED POINT (i.e. to remove all double, float etc). One quick question is how to convert "non-uniform quantization module of reflection coefficients in TNS" from floating to fixed. It uses arcsine and sine functions for non-uniform quantization. I tried lookup table for 256 values in the range (-1, 1) and found arcsine for that. So, I look into this table when I need to calculate arcsine of any value. I do linear interpolation to get exact value. But I am losing precision and not getting the required result. Please comment and suggest me some way to implement it(sine and arcsine functions) in fixed point. I am sure, this is not an unseen problem and I will get a experts view soon. Thanking you, Regards, Devilal Sharma -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090218/d69818b1/attachment.html From sprasad14 at gmail.com Fri Feb 20 06:28:45 2009 From: sprasad14 at gmail.com (prasad s) Date: Fri, 20 Feb 2009 16:58:45 +0530 Subject: [Mp4-tech] [Mp4-Tech]Regarding Resampling Process for Intra samples in H264 SVC Decoder Message-ID: <55bb145e0902200328r3078d0cav80ee9716c6b2af5c@mail.gmail.com> Dear Experts, In section G.8.1.5.3 (Base decoding process for macroblocks in slices with resolution change), of the 14496-10 standard, it is mentioned that the resampling process for intra samples (G.8.6.2) is invoked if any of the following conditions is true, 1. RestrictedSpatialResolutionChangeFlag is equal to 1 and mbType[mbAddr] is equal to I_BL 2. RestrictedSpatialResolutionChangeFlag is equal to 0, and mbType[mbAddr] is NOT equal to I_PCM, I_16x16, I_8x8, or I_4x4. Can you please tell me why the second condition is imposed? Shouldn't it have been is equal to INTRA type? Your help is greatly appreciated, Prasad. From arjun_majumdar at rediffmail.com Sun Feb 22 13:09:05 2009 From: arjun_majumdar at rediffmail.com (arjun majumdar) Date: 22 Feb 2009 18:09:05 -0000 Subject: [Mp4-tech] Regarding Sequence Parameter Set and Picture Parameter Set (H.264 AVC) Message-ID: <20090222180905.363.qmail@f6mail-144-152.rediffmail.com> Hi Garry Sir, I am highly grateful and thankful to you for your unending support in helping us understanding the standard and in turn implementing the standard in hardware. I want some further conformance on our understanding from you regarding Sequence & Picture Parameter Set This is with reference to H.264 Baseline Decoder that we are implementing in hardware. In the standard it is mentioned that initially no Sequence Parameter Sets (SPS) are active. The same also applies to Picture Parameter Set (PPS). Whenever a PPS ID is referred to by a frame, then that particular PPS becomes active and correspondingly the SPS ID referred to by the PPS becomes active too. The the parameters of that particular PPS & SPS is used for decoding of the frame. With reference to my above understanding, my query is that how many such SPS and PPS will be sent in the bitstream before a frame is sent? This becomes an important storage issue for SPS and PPS in hardware implementation. Also I am assuming that the frames sent in decoding order can refer to different PPSs' but should refer to only one SPS? Is my above understanding correct? If not, kindly clarify me on the same and also on the number of SPS and PPS that will be sent before a frame is sent. Thanking you in advance. With Regards, Arjun Majumdar -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090222/b5cdc21e/attachment.html From Shevach.Riabtsev at zoran.com Mon Feb 23 08:28:42 2009 From: Shevach.Riabtsev at zoran.com (Shevach Riabtsev) Date: Mon, 23 Feb 2009 15:28:42 +0200 Subject: [Mp4-tech] [Video][H.264] Is 16-bits precision DSP sufficient for H264 Main Profile decoding? In-Reply-To: <91C4B16D6D58C541BF2F841D27F82536F88DE9@zmlex.zml.zoran.com> References: <91C4B16D6D58C541BF2F841D27F82536F88DDC@zmlex.zml.zoran.com> <91C4B16D6D58C541BF2F841D27F82536F88DDE@zmlex.zml.zoran.com> <14f06c5d0902040151x62a00fbaoce4158eec667b04e@mail.gmail.com> <91C4B16D6D58C541BF2F841D27F82536F88DE9@zmlex.zml.zoran.com> Message-ID: <91C4B16D6D58C541BF2F841D27F82536F88E2A@zmlex.zml.zoran.com> Dear Experts I suppose that original intentions of H.264 standard designers were focused on enabling H.264 Main Profile decoding on 16-bit precision DSP. Indeed, 16-bits arithmetic is sufficient for CABAC operations (see the note at the end of 9.3.1.2 : "The description of the arithmetic decoding engine in this Recommendation | International Standard utilizes 16 bit register precision") Transform and inverse quantization operations also can be executed in 16-bits arithmetic (see IEEE article "Low-Complexity Transform and Quantization in H.264/AVC" : "we see that all operations can be computed in 16-bit arithmetic, for input data with 9-bit dynamic range.") On the other hand some derived parameters in slice header syntax actually exceed 16-bit precision. For example the value of MaxNumPic is derived as follows: - If field_pic_flag is equal to 0, MaxPicNum is set equal to MaxFrameNum. - Otherwise (field_pic_flag is equal to 1), MaxPicNum is set equal to 2*MaxFrameNum. Where MaxFrameNum = 2^( log2_max_frame_num_minus4 + 4 ). Thus MaxFrameNum is in the range [0..2^17] since maximal value of log2_max_frame_num_minus4 is 12. So, we see that for some operations 16-bits arithmetic is not sufficient. Why H.264 designers deviated from 16-bits precision? Shevach Riabtsev Zoran, Israel -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090223/82548233/attachment.html From pankaj_bajpai_iet at operamail.com Mon Feb 23 22:06:11 2009 From: pankaj_bajpai_iet at operamail.com (pankaj bajpai) Date: Tue, 24 Feb 2009 12:06:11 +0900 Subject: [Mp4-tech] [Mp4-Tech][Video-H263-3GP] Sync Sample Entry Message-ID: <20090224030611.CCF4CCBBD1@ws5-11.us4.outblaze.com> Dear All, We are observing that some of the H263 videos in 3GP format are having some sync sample entries (stss)as non-I frames. As per our understanding,in H263, the synchronization points can be provided by I-frame only. The exception can be only when P-frame contain all MBs as Intra, so no dependency on previous frame. So, i would like to know whether is it allowed to have non-I frame as sync sample entry in 3gp? Any comment will be very helpful for our understanding. With regards Pankaj -- _______________________________________________ Surf the Web in a faster, safer and easier way: Download Opera 9 at http://www.opera.com Powered by Outblaze -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090224/a7fe2388/attachment.html From Ajay.Gudi at kpitcummins.com Tue Feb 24 01:41:09 2009 From: Ajay.Gudi at kpitcummins.com (Ajay Gudi) Date: Tue, 24 Feb 2009 12:11:09 +0530 Subject: [Mp4-tech] Regarding CAVLD Decoder[H.264 video] Message-ID: Dear Gary Sir, In the JM standard code, the function readCoeff4x4_CAVLC() does the level and run information computation to give the lists levarr[] & runarr[] respectively. But we are not able to debug that part of the code which combines the level and run information to get the final coefficient lists coeffLevel[] (clause 9.2.4 of standard). If you could please point me that part of the code which does this computation or if you could suggest as to how to pop out the final values of coeffLevel[] of LUMA as well as CHROMA, then it would be of great help to us. We require this information for verification of our H.264 baseline decoder CAVLD RTL block. Thanking you in advance Ajay Gudi -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090224/87949617/attachment.html From Vinay.Sekharappa at lntinfotech.com Mon Feb 23 23:52:51 2009 From: Vinay.Sekharappa at lntinfotech.com (Vinay Sekharappa) Date: Tue, 24 Feb 2009 10:22:51 +0530 Subject: [Mp4-tech] Need to encode flv from yuv streams Message-ID: Hi all, I need to encode raw 4:2:0 HD yuv to FLV file containing VP6 video alone. Can anybody suggest any tool where I can do this, Any idea in this regard would be of great help , Thanks in advance, Vinay ______________________________________________________________________ -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090224/1e2c9495/attachment.html From paragchaurasia at rediffmail.com Wed Feb 25 22:40:33 2009 From: paragchaurasia at rediffmail.com (Parag Chaurasia) Date: 26 Feb 2009 03:40:33 -0000 Subject: [Mp4-tech] AVC/H.264: "Bumping" process for output order DPB conformance Message-ID: <20090226034033.11877.qmail@f5mail-236-222.rediffmail.com> Hi, The "Bumping" process in Annex C, states that - If this frame buffer contains a complementary non-reference field pair with both fields marked as "needed for output" and both fields have the same PicOrderCnt( ), the first of these two fields in decoding order is considered first for output. ? Otherwise, if this frame buffer contains a complementary reference field pair with both fields marked as "needed for output" and both fields have the same PicOrderCnt( ), the entire complementary reference field pair is considered first for output. Can someone please let me know what is the reason for handling the complementary non-reference and complementary reference field pairs differently? Thanks. Parag. -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090226/55c6811a/attachment.html From garysull at windows.microsoft.com Thu Feb 26 00:16:14 2009 From: garysull at windows.microsoft.com (Gary Sullivan) Date: Wed, 25 Feb 2009 21:16:14 -0800 Subject: [Mp4-tech] AVC/H.264: "Bumping" process for output order DPB conformance In-Reply-To: <20090226034033.11877.qmail@f5mail-236-222.rediffmail.com> References: <20090226034033.11877.qmail@f5mail-236-222.rediffmail.com> Message-ID: <406D6FEFCBB98643A34170C59E1ABEF31F7ADD589D@NA-EXMSG-W601.wingroup.windeploy.ntdev.microsoft.com> Parag et al, I believe it is a matter of trying to match the bumping process as closely as possible to the timed output process. Complementary non-reference field pairs are required to have encoded output timing that corresponds to their decoding order. So we can be confident that they should have a bumping output order that is the same as their decoding order. But there is no such requirement on the relative output timing of complementary reference field pairs (since imposing such a limit could sometimes be harmful to coding efficiency). Without using the timing information, there is no way for the bumping process to determine which member of the pair should be output first, so instead of specifying a relative order that might conflict with the timed output order, we specified to output the entire pair in one bump. Best Regards, Gary ________________________________ From: mp4-tech-bounces at lists.mpegif.org [mailto:mp4-tech-bounces at lists.mpegif.org] On Behalf Of Parag Chaurasia Sent: Wednesday, February 25, 2009 7:41 PM To: mp4-tech at lists.mpegif.org Subject: [Mp4-tech] AVC/H.264: "Bumping" process for output order DPB conformance Hi, The "Bumping" process in Annex C, states that - If this frame buffer contains a complementary non-reference field pair with both fields marked as "needed for output" and both fields have the same PicOrderCnt( ), the first of these two fields in decoding order is considered first for output. ? Otherwise, if this frame buffer contains a complementary reference field pair with both fields marked as "needed for output" and both fields have the same PicOrderCnt( ), the entire complementary reference field pair is considered first for output. Can someone please let me know what is the reason for handling the complementary non-reference and complementary reference field pairs differently? Thanks. Parag. [http://imadworks.rediff.com/cgi-bin/AdWorks/adimage.cgi/2705210_2676711/creative_2680353.gif] -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090225/a927df5f/attachment.html From paragchaurasia at rediffmail.com Thu Feb 26 03:14:48 2009 From: paragchaurasia at rediffmail.com (Parag Chaurasia) Date: 26 Feb 2009 08:14:48 -0000 Subject: [Mp4-tech] AVC/H.264: "Bumping" process for output order DPB conformance Message-ID: <1235626056.S.11266.24816.f5mail-147-113.rediffmail.com.1235636088.40983@webmail.rediffmail.com> Hi Gary, Thanks for providing more insight. 1. Does it mean that for the 2 fields of a complementary non-reference field pair, output order is always the same as decoding order? Whereas, for the 2 fields of a complementary non-reference field pair, output order may/may not be the same as decoding order? 2. What's the reason for this distinction? As far as coding efficiency of field pair goes, the same rules should apply to a field pair, irrespective of whether or not the field pair is used for reference. 3. Does this mean that for outputing the fields of a complementary reference field pair which have same PicOrderCnt(), the application has to depend on some other means (not specified in AVC/H.264 specification)? Thanks and Regards, Parag. On Thu, 26 Feb 2009 10:57:36 +0530 wrote >Parag et al, > >I believe it is a matter of trying to match the bumping process as closely as possible to the timed output process. ?Complementary non-reference field pairs are required to have encoded output timing that corresponds to their decoding order. ?So we can be confident that they should have a bumping output order that is the same as their decoding order. ?But there is no such requirement on the relative output timing of complementary reference field pairs (since imposing such a limit could sometimes be harmful to coding efficiency). ?Without using the timing information, there is no way for the bumping process to determine which member of the pair should be output first, so instead of specifying a relative order that might conflict with the timed output order, we specified to output the entire pair in one bump. > >Best Regards, > >Gary > >________________________________ >From: mp4-tech-bounces at lists.mpegif.org [mailto:mp4-tech-bounces at lists.mpegif.org] On Behalf Of Parag Chaurasia >Sent: Wednesday, February 25, 2009 7:41 PM >To: mp4-tech at lists.mpegif.org >Subject: [Mp4-tech] AVC/H.264: "Bumping" process for output order DPB conformance > >Hi, >The "Bumping" process in Annex C, states that >- If this frame buffer contains a complementary non-reference field pair with both fields marked as "needed for output" and both fields have the same PicOrderCnt( ), the first of these two fields in decoding order is considered first for output. > Otherwise, if this frame buffer contains a complementary reference field pair with both fields marked as "needed for output" and both fields have the same PicOrderCnt( ), the entire complementary reference field pair is considered first for output. >Can someone please let me know what is the reason for handling the complementary non-reference and complementary reference field pairs differently? >Thanks. >Parag. > > > >[http://imadworks.rediff.com/cgi-bin/AdWorks/adimage.cgi/2705210_2676711/creative_2680353.gif] >_______________________________________________ >NOTE: Please use clear subject lines for your posts. Include [audio, [video], [systems], [general] or another apppropriate identifier to indicate the type of question you have. > >Note: Conduct on the mailing list is subject to the Antitrust guidelines found at http://www.mpegif.org/public/documents/vault/mp-out-30042-Antitrust.php -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090226/69c42c63/attachment.html From Shevach.Riabtsev at zoran.com Thu Feb 26 11:03:13 2009 From: Shevach.Riabtsev at zoran.com (Shevach Riabtsev) Date: Thu, 26 Feb 2009 18:03:13 +0200 Subject: [Mp4-tech] [Video][H.264] What's the maximal number of times memory_management_control_operation can present in def_ref_pic_marking() Message-ID: <91C4B16D6D58C541BF2F841D27F82536F88E3B@zmlex.zml.zoran.com> Dear experts On the other hand H.264 standard restricts the maximal number of reordering_of_pic_nums_idc commands in ref_pic_list_reordering() : "The number of times that reordering_of_pic_nums_idc is not equal to 3 (stop command) following ref_pic_list_reordering_flag_l0 shall not exceed num_ref_idx_l0_active_minus1 + 1" Indeed, this restriction sounds reasonable since an encoder can achieve with #( num_ref_idx_l0_active_minus1 + 1) reordering commands any permutation in reference list. On the other hand I don't observe in the standard any limitation (at least explicitly) on the number of memory_management_control_operation commands in def_ref_pic_marking(). Although I suppose the maximal number of memory_management_control_operation commands should be around num_ref_frames * 2. Regards Shevach Riabtsev Zoran, Israel -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090226/2288f966/attachment.html From garysull at windows.microsoft.com Thu Feb 26 12:53:26 2009 From: garysull at windows.microsoft.com (Gary Sullivan) Date: Thu, 26 Feb 2009 09:53:26 -0800 Subject: [Mp4-tech] [Video][H.264] What's the maximal number of times memory_management_control_operation can present in def_ref_pic_marking() In-Reply-To: <91C4B16D6D58C541BF2F841D27F82536F88E3B@zmlex.zml.zoran.com> References: <91C4B16D6D58C541BF2F841D27F82536F88E3B@zmlex.zml.zoran.com> Message-ID: <406D6FEFCBB98643A34170C59E1ABEF31F7ADD59AB@NA-EXMSG-W601.wingroup.windeploy.ntdev.microsoft.com> Shevach et al, There is an indirect limit on the number of MMCO commands due to the restriction that multiple commands cannot be sent that have the same effect on DPB status and the restrictions on the state of the pictures in the DPB prior to some MMCO commands (a picture must be in a certain marking state in order to be marked in certain ways, and once the marking command takes effect, it won't be in the same state anymore). Best Regards, Gary Sullivan ________________________________ From: mp4-tech-bounces at lists.mpegif.org [mailto:mp4-tech-bounces at lists.mpegif.org] On Behalf Of Shevach Riabtsev Sent: Thursday, February 26, 2009 8:03 AM To: mp4-tech at lists.mpegif.org Subject: [Mp4-tech] [Video][H.264] What's the maximal number of times memory_management_control_operation can present in def_ref_pic_marking() Dear experts On the other hand H.264 standard restricts the maximal number of reordering_of_pic_nums_idc commands in ref_pic_list_reordering() : ?The number of times that reordering_of_pic_nums_idc is not equal to 3 (stop command) following ref_pic_list_reordering_flag_l0 shall not exceed num_ref_idx_l0_active_minus1 + 1? Indeed, this restriction sounds reasonable since an encoder can achieve with #( num_ref_idx_l0_active_minus1 + 1) reordering commands any permutation in reference list. On the other hand I don?t observe in the standard any limitation (at least explicitly) on the number of memory_management_control_operation commands in def_ref_pic_marking(). Although I suppose the maximal number of memory_management_control_operation commands should be around num_ref_frames * 2. Regards Shevach Riabtsev Zoran, Israel -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090226/6224ffa1/attachment.html From vlyamtsev at gmail.com Fri Feb 27 15:54:33 2009 From: vlyamtsev at gmail.com (Victor lyamtsev) Date: Fri, 27 Feb 2009 15:54:33 -0500 Subject: [Mp4-tech] H.264 SVC questions Message-ID: <76224b100902271254k72e78170h497550b3e4901fda@mail.gmail.com> Hello, I'd appreciate if I could clear some basic questions on Annex G of H264 spec (scalable video coding): Does the term "layered coding" refer to the breaking the picture into the netwok packets in the " packet loss tolerant" fashion, so that the loss of one part of IDR slice doesn't result in loss of the whole picture? E.g. IDR is broken into the smaller "chunks": "base layer", "layer 1" ... where each layer can be used to reproduce the picture. Or, does it just mean that for the same input stream encoder creates few output streams with different resolutions ( for broadcast/ multicast) ? Is the purpose of Annex G to provide better packet loss tolerance for media streaming? Thank you, -V From sandipray05 at yahoo.com Fri Feb 27 23:11:25 2009 From: sandipray05 at yahoo.com (Sandip Ray) Date: Sat, 28 Feb 2009 09:41:25 +0530 (IST) Subject: [Mp4-tech] [H.264] Frame rate conversion in H.264/AVC and SVC Message-ID: <137754.98625.qm@web94904.mail.in2.yahoo.com> Dear Experts, ? I want to play 30 fps H.264/AVC video bitstream at 2x and 4x speed like?any DVD player.?I understand that all?I need to do is to skip alternate(for 2x) frames in the?display order.?I still?need to decode all of the frames(though all of those are?not sent to display) because of temporal dependency in the bitstream. This requires me to decode 30 fps video bitstream at 60 fps(for 2x)?to achieve real time. I don't think I will be able to decode at 60 fps with the available hardware. ? Could anyone please provide me a solution for this ? ? I thought of Scalable Video Coding(SVC) as an alternative option for generating those video bitstreams. I believe I can decode and play every alternate frames(for 2x) without decoding all of the frames because SVC supports hierarchical temporal prediction. Does?H.264/AVC decoder has the capability to decode SVC bitstreams ? ? Thanks and Regards, Sandip ? ? ? ? ? ? ?need to?decode 30 fps video at 15fps and 7.5 fps. This is ???understand that decoder need not to Add more friends to your messenger and enjoy! Go to http://messenger.yahoo.com/invite/ -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090228/9b434ef2/attachment.html From adamm at wwcoms.com Fri Feb 27 20:44:37 2009 From: adamm at wwcoms.com (Adam Malamy) Date: Fri, 27 Feb 2009 17:44:37 -0800 Subject: [Mp4-tech] Regarding Sequence Parameter Set and Picture Parameter Set (H.264 AVC) In-Reply-To: <20090222180905.363.qmail@f6mail-144-152.rediffmail.com> References: <20090222180905.363.qmail@f6mail-144-152.rediffmail.com> Message-ID: <49a89707.1d078e0a.66a1.ffffe2fe@mx.google.com> Hello experts, No one seems to have picked up on this email thread, but I agree that the 32 possible sps_id's and 256 possible pps_id's create a storage problem for hardware decoder implementations. Our hardware decoder does not store values for 256 pps's, although the issue can be worked around in the support software. This is one of several areas where ease of implementation in hardware was apparently not considered in writing the h.264 spec. My guess is that the 32 and 256 id's for sps and pps were thrown in as 'more than anyone could ever want' and since the arrays are small and won't use much system memory in a software implementation, no effort was made to establish a practical maximum. What is the greatest number of sps and pps id's anyone has seen in a real stream? -Adam Malamy Director of Engineering, Verification Cavium Networks 650-623-3611 From: mp4-tech-bounces at lists.mpegif.org [mailto:mp4-tech-bounces at lists.mpegif.org] On Behalf Of arjun majumdar Sent: Sunday, February 22, 2009 10:09 AM To: mp4-tech at lists.mpegif.org Subject: [Mp4-tech] Regarding Sequence Parameter Set and Picture Parameter Set (H.264 AVC) Hi Garry Sir, I am highly grateful and thankful to you for your unending support in helping us understanding the standard and in turn implementing the standard in hardware. I want some further conformance on our understanding from you regarding Sequence & Picture Parameter Set This is with reference to H.264 Baseline Decoder that we are implementing in hardware. In the standard it is mentioned that initially no Sequence Parameter Sets (SPS) are active. The same also applies to Picture Parameter Set (PPS). Whenever a PPS ID is referred to by a frame, then that particular PPS becomes active and correspondingly the SPS ID referred to by the PPS becomes active too. The the parameters of that particular PPS & SPS is used for decoding of the frame. With reference to my above understanding, my query is that how many such SPS and PPS will be sent in the bitstream before a frame is sent? This becomes an important storage issue for SPS and PPS in hardware implementation. Also I am assuming that the frames sent in decoding order can refer to different PPSs' but should refer to only one SPS? Is my above understanding correct? If not, kindly clarify me on the same and also on the number of SPS and PPS that will be sent before a frame is sent. Thanking you in advance. With Regards, Arjun Majumdar Moneywiz -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090227/3ed9e858/attachment.html From herbert.thoma at iis.fraunhofer.de Sat Feb 28 08:29:16 2009 From: herbert.thoma at iis.fraunhofer.de (Herbert Thoma) Date: Sat, 28 Feb 2009 14:29:16 +0100 Subject: [Mp4-tech] [H.264] Frame rate conversion in H.264/AVC and SVC In-Reply-To: <137754.98625.qm@web94904.mail.in2.yahoo.com> References: <137754.98625.qm@web94904.mail.in2.yahoo.com> Message-ID: <49A93C2C.3020805@iis.fraunhofer.de> Sandip Ray schrieb: > Dear Experts, > > I want to play 30 fps H.264/AVC video bitstream at 2x and 4x speed > like any DVD player. I understand that all I need to do is to skip > alternate(for 2x) frames in the display order. I still need to decode > all of the frames(though all of those are not sent to display) because > of temporal dependency in the bitstream. This requires me to decode 30 > fps video bitstream at 60 fps(for 2x) to achieve real time. I don't > think I will be able to decode at 60 fps with the available hardware. > > Could anyone please provide me a solution for this ? > > I thought of Scalable Video Coding(SVC) as an alternative option for > generating those video bitstreams. I believe I can decode and play every > alternate frames(for 2x) without decoding all of the frames because SVC > supports hierarchical temporal prediction. Does H.264/AVC decoder has > the capability to decode SVC bitstreams ? If you need only temporal scalability this can be solved with plain AVC, no SVC needed. Any standard AVC decoder can decode an AVC bitstream that employs hierarchical temporal prediction. One of the simplest prediction schemes would be IbbbP, where b denotes a non referenced b picture (could even be a non ref p picture if you need to use baseline profile). You can then discard all b pictures for 4x or keep the middle b picture for 2x. More elaborate schemes like IbBbP are possible. Herbert. > Thanks and Regards, > Sandip > > > > > > > need to decode 30 fps video at 15fps and 7.5 fps. This is understand > that decoder need not to > > > ------------------------------------------------------------------------ > Add more friends to your messenger and enjoy! Invite them now. > > > > > ------------------------------------------------------------------------ > > _______________________________________________ > NOTE: Please use clear subject lines for your posts. Include [audio, [video], [systems], [general] or another apppropriate identifier to indicate the type of question you have. > > Note: Conduct on the mailing list is subject to the Antitrust guidelines found at http://www.mpegif.org/public/documents/vault/mp-out-30042-Antitrust.php -- Herbert Thoma Dipl.-Ing., MBA Head of Video Group Multimedia Realtime Systems Department Fraunhofer IIS Am Wolfsmantel 33, 91058 Erlangen, Germany Phone: +49-9131-776-6130 Fax: +49-9131-776-6099 email: tma at iis.fhg.de www: http://www.iis.fhg.de/ From sandipray05 at yahoo.com Sat Feb 28 13:01:33 2009 From: sandipray05 at yahoo.com (Sandip Ray) Date: Sat, 28 Feb 2009 23:31:33 +0530 (IST) Subject: [Mp4-tech] [H.264] Frame rate conversion in H.264/AVC and SVC In-Reply-To: <49A93C2C.3020805@iis.fraunhofer.de> Message-ID: <13523.99327.qm@web94904.mail.in2.yahoo.com> Dear Herbert, ? Thanks for the solution you have mentioned. ? I remember that IBBBP(odd number of B in between) is?the typical GOP structure?of MPEG 2 elementary bitstream used within MPEG 2 program stream. That's why any DVD player can play at 2x or 4x speed without any problem. ? Thanks and Regards, Sandip --- On Sat, 28/2/09, Herbert Thoma wrote: From: Herbert Thoma Subject: Re: [Mp4-tech] [H.264] Frame rate conversion in H.264/AVC and SVC To: sandipray05 at yahoo.com Cc: mp4-tech at lists.mpegif.org Date: Saturday, 28 February, 2009, 6:59 PM Sandip Ray schrieb: > Dear Experts, > > I want to play 30 fps H.264/AVC video bitstream at 2x and 4x speed > like any DVD player. I understand that all I need to do is to skip > alternate(for 2x) frames in the display order. I still need to decode > all of the frames(though all of those are not sent to display) because > of temporal dependency in the bitstream. This requires me to decode 30 > fps video bitstream at 60 fps(for 2x) to achieve real time. I don't > think I will be able to decode at 60 fps with the available hardware. > > Could anyone please provide me a solution for this ? > > I thought of Scalable Video Coding(SVC) as an alternative option for > generating those video bitstreams. I believe I can decode and play every > alternate frames(for 2x) without decoding all of the frames because SVC > supports hierarchical temporal prediction. Does H.264/AVC decoder has > the capability to decode SVC bitstreams ? If you need only temporal scalability this can be solved with plain AVC, no SVC needed. Any standard AVC decoder can decode an AVC bitstream that employs hierarchical temporal prediction. One of the simplest prediction schemes would be IbbbP, where b denotes a non referenced b picture (could even be a non ref p picture if you need to use baseline profile). You can then discard all b pictures for 4x or keep the middle b picture for 2x. More elaborate schemes like IbBbP are possible.. Herbert. > Thanks and Regards, > Sandip > > > > > > > need to decode 30 fps video at 15fps and 7.5 fps. This is understand > that decoder need not to > > > ------------------------------------------------------------------------ > Add more friends to your messenger and enjoy! Invite them now. > > > > > ------------------------------------------------------------------------ > > _______________________________________________ > NOTE: Please use clear subject lines for your posts. Include [audio, [video], [systems], [general] or another apppropriate identifier to indicate the type of question you have. > > Note: Conduct on the mailing list is subject to the Antitrust guidelines found at http://www.mpegif.org/public/documents/vault/mp-out-30042-Antitrust.php -- Herbert Thoma Dipl.-Ing., MBA Head of Video Group Multimedia Realtime Systems Department Fraunhofer IIS Am Wolfsmantel 33, 91058 Erlangen, Germany Phone: +49-9131-776-6130 Fax: +49-9131-776-6099 email: tma at iis.fhg.de www: http://www.iis.fhg.de/ Check out the all-new Messenger 9.0! Go to http://in.messenger.yahoo.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090228/aa7fa8e0/attachment.html From mrison at hotmail.com Sat Feb 28 13:07:25 2009 From: mrison at hotmail.com (Mark RISON) Date: Sat, 28 Feb 2009 18:07:25 +0000 Subject: [Mp4-tech] [audio; system] "Interesting" MPEG files Message-ID: Can anyone point me at any examples of the following types of file? - MP4 files with a track with a streamType of 0x05 (AudioStream) but an objectTypeIndication other than 0x40 (MPEG-4 AAC) -- especially 0x67 (MPEG-2 AAC LC), 0x69 (MPEG-2 Audio) and 0x6b (MPEG-1 Audio) - MP4 files with just one track, which has a streamType of 0x05, but whose chunks are not contiguous (i.e. no gaps between chunks) or not monotonic (i.e. chunk offsets always increasing) - MP4 files with ID3v2 meta-data (per http://www.mp4ra.org/specs.html#id3v2 ) - MP4 files with co64 and/or stz2 boxes - MP4 files with 64-bit-length boxes - MP4 files with "to EOF"-length boxes - ADTS files with a channel configuration of 0 (i.e. to find out channel configuration need to find first ADTS frame whose first element is a PCE) Mark, rare file enthusiast -- CPC/IP - A TCP/IP stack for Amstrad CPCs -- http://www.cepece.info/cpcip/ "Z88 vs CPC? Christ. How did we miss that platform war?" -- http://www.ntk.net/index.cgi?b=02000-01-28&l=111#l _________________________________________________________________ Windows Live Messenger just got better .Video display pics, contact updates & more. http://www.download.live.com/messenger From mrison at hotmail.com Sat Feb 28 13:08:04 2009 From: mrison at hotmail.com (Mark RISON) Date: Sat, 28 Feb 2009 18:08:04 +0000 Subject: [Mp4-tech] [audio; system] What if PCE disagrees with MP4/ADTS header? Message-ID: In the case of MP4, what happens if the audioObjectType or samplingFrequencyIndex in the DecoderSpecificInfo for MPEG-4 AAC files differ from the object_type or sampling_frequency_index in the PCE at the end of the GASpecificConfig, where the channelConfiguration is 0? Which one wins? Ditto ADTS. Mark -- CPC/IP - A TCP/IP stack for Amstrad CPCs -- http://www.cepece.info/cpcip/ "Z88 vs CPC? Christ. How did we miss that platform war?" -- http://www.ntk.net/index.cgi?b=02000-01-28&l=111#l _________________________________________________________________ Twice the fun?Share photos while you chat with Windows Live Messenger. Learn more. http://www.microsoft.com/uk/windows/windowslive/products/messenger.aspx From alex.converse at gmail.com Sat Feb 28 13:38:03 2009 From: alex.converse at gmail.com (Alex Converse) Date: Sat, 28 Feb 2009 13:38:03 -0500 Subject: [Mp4-tech] [audio; system] "Interesting" MPEG files In-Reply-To: References: Message-ID: On Sat, Feb 28, 2009 at 1:07 PM, Mark RISON wrote: > > Can anyone point me at any examples of the following types of file? > > - MP4 files with a track with a streamType of 0x05 (AudioStream) but > an objectTypeIndication other than 0x40 (MPEG-4 AAC) -- especially > 0x67 (MPEG-2 AAC LC), 0x69 (MPEG-2 Audio) and 0x6b (MPEG-1 Audio) > > - MP4 files with just one track, which has a streamType of 0x05, but > whose chunks are not contiguous (i.e. no gaps between chunks) or > not monotonic (i.e. chunk offsets always increasing) > > - MP4 files with ID3v2 meta-data (per http://www.mp4ra.org/specs.html#id3v2 ) > > - MP4 files with co64 and/or stz2 boxes > > - MP4 files with 64-bit-length boxes > > - MP4 files with "to EOF"-length boxes > > - ADTS files with a channel configuration of 0 (i.e. to find out > channel configuration need to find first ADTS frame whose first > element is a PCE) > The reference tool adif2mp4 can convert mp4 files with channel_configuration 0 to ADTS files with channel_configuration 0. I don't know about the rest but am rather curious. Regards, Alex Converse From fertoro at gmail.com Sat Feb 28 17:28:12 2009 From: fertoro at gmail.com (Fernando Toro) Date: Sun, 1 Mar 2009 17:58:12 +1930 Subject: [Mp4-tech] [H.264] Frame rate conversion in H.264/AVC and SVC In-Reply-To: <49A93C2C.3020805@iis.fraunhofer.de> References: <137754.98625.qm@web94904.mail.in2.yahoo.com> <49A93C2C.3020805@iis.fraunhofer.de> Message-ID: <9ebb503c0902281428mf4af0bck5cec4a74febf87e1@mail.gmail.com> Hi Herbert et all; If you need only temporal scalability this can be solved with plain > AVC, no SVC needed. > > Any standard AVC decoder can decode an AVC bitstream that employs > hierarchical > temporal prediction. > At this point a related question arises: can a standard AVC encoder to encode a temporal scalable bitstream? Thanks in advance Fernando -------------- next part -------------- An HTML attachment was scrubbed... URL: /pipermail/mp4-tech/attachments/20090301/5c090582/attachment.html