<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Mpeg2 ts with VBI Data in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Mpeg2-ts-with-VBI-Data/m-p/889466#M11274</link>
    <description>&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;Hello,&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;there are some new ideas from me about transporting video and private elementary streams with Mpeg2Ts.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;Now I can write the private streams as VBI-data (UMC::TrackType==UMC::TRACK_VBI_TXT) into the TS. Important to mention is, that the MPEG2TsChunkWriter does not work correctly for VBI-Data. So I have to overwrite the methods PrepareChunk() and WriteChunk():&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;Status VbiMPEG2TSChunkWriter::PrepareChunk(void) {&lt;BR /&gt; [...]&lt;BR /&gt;&lt;FONT color="#9acd32"&gt; &lt;/FONT&gt;&lt;FONT color="#008000"&gt;//old version&lt;BR /&gt; //if (m_uiStartIndicator &amp;amp;&amp;amp; m_ESType != MPEG2MUX_ES_VBI_DATA) &lt;BR /&gt; //new version&lt;BR /&gt;&lt;/FONT&gt; if (m_uiStartIndicator) {&lt;BR /&gt; [...]&lt;BR /&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face="Arial" color="#000000"&gt;Status VbiMPEG2TSChunkWriter::WriteChunk(void) {&lt;BR /&gt; [...]&lt;BR /&gt; &lt;FONT color="#008000"&gt;//old version&lt;BR /&gt; //if (m_uiStartIndicator &amp;amp;&amp;amp; m_ESType != MPEG2MUX_ES_VBI_DATA) &lt;BR /&gt; //new version&lt;BR /&gt;&lt;/FONT&gt; if (m_uiStartIndicator) {&lt;BR /&gt; [...] &lt;BR /&gt;} &lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;Now the Pes-Header will be written for VBI-data, too. This is necessary, because the Splitter looks for it while extracting the data.&lt;BR /&gt;The muxer has to be modified like this:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;UMC::TrackParams &amp;amp;param = muxerParams-&amp;gt;pTrackParams[trackNumberVbi];&lt;BR /&gt;param.type = UMC::VBI_TRACK;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;&lt;FONT color="#008000"&gt;//PID is a struct containing the private data&lt;/FONT&gt;&lt;BR /&gt;param.bufferParams.m_prefInputBufferSize = sizeof( PID );&lt;BR /&gt;&lt;BR /&gt;&lt;FONT color="#008000"&gt;//m_lpVbiParams is an object of a class, which is derived from UMC::BaseCodecParams&lt;BR /&gt;&lt;/FONT&gt;&lt;FONT color="#008000"&gt;//info is an object from a class, which is derived from UMC::StreamInfo&lt;/FONT&gt;&lt;BR /&gt;param.info.undef = &amp;amp;m_lpVbiParams-&amp;gt;info;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;The data can be put into the TS like this:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;&lt;FONT color="#008000"&gt;//VbiData is derived from UMC::MediaData&lt;/FONT&gt;&lt;BR /&gt;VbiData mux_data( 2 * sizeof(PID) + 1 );&lt;BR /&gt;PID pid;&lt;BR /&gt;while (!bStopFlag) {&lt;BR /&gt; mux_data.setPrivateData(pid);&lt;BR /&gt; mux_data.SetDataSize(sizeof(PID));&lt;BR /&gt; memcpy(mux_data.GetDataPointer(), &amp;amp;mux_data.getMetadata(), sizeof(PID));&lt;BR /&gt; &lt;BR /&gt; &lt;FONT color="#008000"&gt;//IMPORTANT: Timestamps have to be set!&lt;/FONT&gt;&lt;BR /&gt; mux_data.SetTime(m_pts_Video_start, m_pts_Video_ende );&lt;BR /&gt; umcRes = m_lpMuxer-&amp;gt;PutData(&amp;amp;mux_data, 1);&lt;BR /&gt; if (UMC::UMC_ERR_NOT_ENOUGH_BUFFER == umcRes){&lt;BR /&gt; vm_time_sleep(TIME_TO_SLEEP);&lt;BR /&gt; }&lt;BR /&gt;}&lt;BR /&gt;m_lpMuxer-&amp;gt;PutEndOfStream(1);&lt;BR /&gt;m_lpMuxer-&amp;gt;Flush(); &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;When I tried to extract the VBI-data I realized, that the Demuxer has to be modified, too, because the UMC::Mpeg2PesParser is not able to ident
ify VBI-data.&lt;BR /&gt;So I overwrote the method ParsePmtInfo():&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;Status VbiMpeg2PesParser::ParsePmtInfo(Mpeg2TsPmt &amp;amp;pmt) {&lt;BR /&gt; [...]&lt;BR /&gt;&lt;FONT color="#008000"&gt; //old version&lt;BR /&gt; /*} else if (0x06 == pmt.pESs&lt;I&gt;.uiType) {&lt;BR /&gt; // we should wait for decriptor to determine type&lt;BR /&gt; m_pInfo[iTrack]-&amp;gt;m_Type = TRACK_UNKNOWN;&lt;BR /&gt; }*/&lt;BR /&gt; //new version&lt;BR /&gt;&lt;/I&gt;&lt;/FONT&gt; } else if (0x06 == pmt.pESs&lt;I&gt;.uiType) {&lt;BR /&gt; &lt;FONT color="#008000"&gt;//new for VBI&lt;BR /&gt;&lt;/FONT&gt; m_pInfo[iTrack]-&amp;gt;m_Type = TRACK_VBI_TXT;&lt;BR /&gt; }&lt;BR /&gt; [...]&lt;BR /&gt;}&lt;/I&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;The next step is to define some rules for the UMC::ThreadedDemuxer and to start the demuxer:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;UMC::Splitter m_pSplitter = new VbiThreadedDemuxer;&lt;BR /&gt;UMC::DemuxerParams m_lpDemuxerParams= new DemuxerParams;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;m_lpDemuxerParams-&amp;gt;m_pDataReader = m_pDataReader;&lt;BR /&gt;m_lpDemuxerParams-&amp;gt;m_uiRules = 2;&lt;BR /&gt;m_lpDemuxerParams-&amp;gt;m_pRules = new TrackRule[m_lpDemuxerParams-&amp;gt;m_uiRules];&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;&lt;FONT color="#008000"&gt;//one rule for video&lt;BR /&gt;&lt;/FONT&gt;m_lpDemuxerParams-&amp;gt;m_pRules[0].m_TypeMask = TRACK_ANY_VIDEO;&lt;BR /&gt;m_lpDemuxerParams-&amp;gt;m_pRules[0].m_iPID = -1;&lt;BR /&gt;m_lpDemuxerParams-&amp;gt;m_pRules[0].m_iLimit = 1;&lt;BR /&gt;m_lpDemuxerParams-&amp;gt;m_pRules[0].m_bValidAfterInit = true;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;&lt;FONT color="#008000"&gt;//one rule for vbi&lt;/FONT&gt;&lt;BR /&gt;m_lpDemuxerParams-&amp;gt;m_pRules[1].m_TypeMask = TRACK_ANY_VBI;&lt;BR /&gt;m_lpDemuxerParams-&amp;gt;m_pRules[1].m_iPID = -1;&lt;BR /&gt;m_lpDemuxerParams-&amp;gt;m_pRules[1].m_iLimit = 1;&lt;BR /&gt;m_lpDemuxerParams-&amp;gt;m_pRules[1].m_bValidAfterInit = true;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;m_pSplitter-&amp;gt;Init(*m_lpDemuxerParams);&lt;BR /&gt;m_pSplitter-&amp;gt;Run();&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;Now the Splitter is able to identify VBI-data and videos and I could start to work on the data.&lt;BR /&gt;First look for the number of the VBI-track and save it in m_nVbiTrack:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;Ipp32u i;&lt;BR /&gt;Ipp32u m_nVbiTrack;&lt;BR /&gt;UMC::SplitterInfo* pSplitterInfo = NULL;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;m_pSplitter-&amp;gt;GetInfo(&amp;amp;pSplitterInfo);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;for (i=0; i&amp;lt; pSplitterInfo-&amp;gt;m_nOfTracks; i++) {&lt;BR /&gt; if (pSplitterInfo-&amp;gt;m_ppTrackInfo&lt;I&gt;-&amp;gt;m_isSelected) {&lt;BR /&gt; if (pSplitterInfo-&amp;gt;m_ppTrackInfo&lt;I&gt;-&amp;gt;m_Type &amp;amp; UMC::TRACK_ANY_VBI) {&lt;BR /&gt; m_nVbiTrack = i;&lt;BR /&gt; vm_string_printf("VBI found...
");&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt;}&lt;/I&gt;&lt;/I&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;Then extract the data of track number m_nVbiTrack out of the 
datastream:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;UMC::MediaData vbiData;&lt;BR /&gt;PID pid;&lt;BR /&gt;size_t sizePid = sizeof(pid);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;while(!bStopFlag) {&lt;BR /&gt; while(UMC::UMC_ERR_NOT_ENOUGH_DATA == m_pSplitter-&amp;gt;GetNextData(&amp;amp;vbiData, m_nVbiTrack)) {&lt;BR /&gt; vm_time_sleep(5);&lt;BR /&gt; }&lt;BR /&gt; memcpy(&amp;amp;pid, vbiData.GetDataPointer(), sizePid);&lt;BR /&gt; pid.process();&lt;BR /&gt;}&lt;/FONT&gt;&lt;/P&gt;</description>
    <pubDate>Mon, 03 Dec 2007 13:41:14 GMT</pubDate>
    <dc:creator>rippi</dc:creator>
    <dc:date>2007-12-03T13:41:14Z</dc:date>
    <item>
      <title>Mpeg2 ts with VBI Data</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Mpeg2-ts-with-VBI-Data/m-p/889464#M11272</link>
      <description>I am trying to pack a H.264 video steam into a mpeg2 transport stream. It works very well. Now I have to add some further information (mata data) to that stream. My first idea was to put these information as vbi data. Unfortunately my application does not work properly and I cannot locate the errors. I also looked for some examples, but I could not find anything about vbi data in mpeg2ts. Can anybody help me with maybe some hints or examples?&lt;BR /&gt;</description>
      <pubDate>Thu, 22 Nov 2007 08:12:43 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Mpeg2-ts-with-VBI-Data/m-p/889464#M11272</guid>
      <dc:creator>rippi</dc:creator>
      <dc:date>2007-11-22T08:12:43Z</dc:date>
    </item>
    <item>
      <title>Re: Mpeg2 ts with VBI Data</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Mpeg2-ts-with-VBI-Data/m-p/889465#M11273</link>
      <description>Same problem here, we 're also trying to pack MPEG4 video stream with private elementary stream that is neither video nor audio.We are trying to put into VBI_TRACK but we haven't succeeded yet.&lt;BR /&gt;</description>
      <pubDate>Thu, 22 Nov 2007 12:12:58 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Mpeg2-ts-with-VBI-Data/m-p/889465#M11273</guid>
      <dc:creator>Ali_Gökalp_P_</dc:creator>
      <dc:date>2007-11-22T12:12:58Z</dc:date>
    </item>
    <item>
      <title>Re: Mpeg2 ts with VBI Data</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Mpeg2-ts-with-VBI-Data/m-p/889466#M11274</link>
      <description>&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;Hello,&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;there are some new ideas from me about transporting video and private elementary streams with Mpeg2Ts.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;Now I can write the private streams as VBI-data (UMC::TrackType==UMC::TRACK_VBI_TXT) into the TS. Important to mention is, that the MPEG2TsChunkWriter does not work correctly for VBI-Data. So I have to overwrite the methods PrepareChunk() and WriteChunk():&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;Status VbiMPEG2TSChunkWriter::PrepareChunk(void) {&lt;BR /&gt; [...]&lt;BR /&gt;&lt;FONT color="#9acd32"&gt; &lt;/FONT&gt;&lt;FONT color="#008000"&gt;//old version&lt;BR /&gt; //if (m_uiStartIndicator &amp;amp;&amp;amp; m_ESType != MPEG2MUX_ES_VBI_DATA) &lt;BR /&gt; //new version&lt;BR /&gt;&lt;/FONT&gt; if (m_uiStartIndicator) {&lt;BR /&gt; [...]&lt;BR /&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face="Arial" color="#000000"&gt;Status VbiMPEG2TSChunkWriter::WriteChunk(void) {&lt;BR /&gt; [...]&lt;BR /&gt; &lt;FONT color="#008000"&gt;//old version&lt;BR /&gt; //if (m_uiStartIndicator &amp;amp;&amp;amp; m_ESType != MPEG2MUX_ES_VBI_DATA) &lt;BR /&gt; //new version&lt;BR /&gt;&lt;/FONT&gt; if (m_uiStartIndicator) {&lt;BR /&gt; [...] &lt;BR /&gt;} &lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;Now the Pes-Header will be written for VBI-data, too. This is necessary, because the Splitter looks for it while extracting the data.&lt;BR /&gt;The muxer has to be modified like this:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;UMC::TrackParams &amp;amp;param = muxerParams-&amp;gt;pTrackParams[trackNumberVbi];&lt;BR /&gt;param.type = UMC::VBI_TRACK;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;&lt;FONT color="#008000"&gt;//PID is a struct containing the private data&lt;/FONT&gt;&lt;BR /&gt;param.bufferParams.m_prefInputBufferSize = sizeof( PID );&lt;BR /&gt;&lt;BR /&gt;&lt;FONT color="#008000"&gt;//m_lpVbiParams is an object of a class, which is derived from UMC::BaseCodecParams&lt;BR /&gt;&lt;/FONT&gt;&lt;FONT color="#008000"&gt;//info is an object from a class, which is derived from UMC::StreamInfo&lt;/FONT&gt;&lt;BR /&gt;param.info.undef = &amp;amp;m_lpVbiParams-&amp;gt;info;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;The data can be put into the TS like this:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;&lt;FONT color="#008000"&gt;//VbiData is derived from UMC::MediaData&lt;/FONT&gt;&lt;BR /&gt;VbiData mux_data( 2 * sizeof(PID) + 1 );&lt;BR /&gt;PID pid;&lt;BR /&gt;while (!bStopFlag) {&lt;BR /&gt; mux_data.setPrivateData(pid);&lt;BR /&gt; mux_data.SetDataSize(sizeof(PID));&lt;BR /&gt; memcpy(mux_data.GetDataPointer(), &amp;amp;mux_data.getMetadata(), sizeof(PID));&lt;BR /&gt; &lt;BR /&gt; &lt;FONT color="#008000"&gt;//IMPORTANT: Timestamps have to be set!&lt;/FONT&gt;&lt;BR /&gt; mux_data.SetTime(m_pts_Video_start, m_pts_Video_ende );&lt;BR /&gt; umcRes = m_lpMuxer-&amp;gt;PutData(&amp;amp;mux_data, 1);&lt;BR /&gt; if (UMC::UMC_ERR_NOT_ENOUGH_BUFFER == umcRes){&lt;BR /&gt; vm_time_sleep(TIME_TO_SLEEP);&lt;BR /&gt; }&lt;BR /&gt;}&lt;BR /&gt;m_lpMuxer-&amp;gt;PutEndOfStream(1);&lt;BR /&gt;m_lpMuxer-&amp;gt;Flush(); &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;When I tried to extract the VBI-data I realized, that the Demuxer has to be modified, too, because the UMC::Mpeg2PesParser is not able to ident
ify VBI-data.&lt;BR /&gt;So I overwrote the method ParsePmtInfo():&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;Status VbiMpeg2PesParser::ParsePmtInfo(Mpeg2TsPmt &amp;amp;pmt) {&lt;BR /&gt; [...]&lt;BR /&gt;&lt;FONT color="#008000"&gt; //old version&lt;BR /&gt; /*} else if (0x06 == pmt.pESs&lt;I&gt;.uiType) {&lt;BR /&gt; // we should wait for decriptor to determine type&lt;BR /&gt; m_pInfo[iTrack]-&amp;gt;m_Type = TRACK_UNKNOWN;&lt;BR /&gt; }*/&lt;BR /&gt; //new version&lt;BR /&gt;&lt;/I&gt;&lt;/FONT&gt; } else if (0x06 == pmt.pESs&lt;I&gt;.uiType) {&lt;BR /&gt; &lt;FONT color="#008000"&gt;//new for VBI&lt;BR /&gt;&lt;/FONT&gt; m_pInfo[iTrack]-&amp;gt;m_Type = TRACK_VBI_TXT;&lt;BR /&gt; }&lt;BR /&gt; [...]&lt;BR /&gt;}&lt;/I&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;The next step is to define some rules for the UMC::ThreadedDemuxer and to start the demuxer:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;UMC::Splitter m_pSplitter = new VbiThreadedDemuxer;&lt;BR /&gt;UMC::DemuxerParams m_lpDemuxerParams= new DemuxerParams;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;m_lpDemuxerParams-&amp;gt;m_pDataReader = m_pDataReader;&lt;BR /&gt;m_lpDemuxerParams-&amp;gt;m_uiRules = 2;&lt;BR /&gt;m_lpDemuxerParams-&amp;gt;m_pRules = new TrackRule[m_lpDemuxerParams-&amp;gt;m_uiRules];&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;&lt;FONT color="#008000"&gt;//one rule for video&lt;BR /&gt;&lt;/FONT&gt;m_lpDemuxerParams-&amp;gt;m_pRules[0].m_TypeMask = TRACK_ANY_VIDEO;&lt;BR /&gt;m_lpDemuxerParams-&amp;gt;m_pRules[0].m_iPID = -1;&lt;BR /&gt;m_lpDemuxerParams-&amp;gt;m_pRules[0].m_iLimit = 1;&lt;BR /&gt;m_lpDemuxerParams-&amp;gt;m_pRules[0].m_bValidAfterInit = true;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;&lt;FONT color="#008000"&gt;//one rule for vbi&lt;/FONT&gt;&lt;BR /&gt;m_lpDemuxerParams-&amp;gt;m_pRules[1].m_TypeMask = TRACK_ANY_VBI;&lt;BR /&gt;m_lpDemuxerParams-&amp;gt;m_pRules[1].m_iPID = -1;&lt;BR /&gt;m_lpDemuxerParams-&amp;gt;m_pRules[1].m_iLimit = 1;&lt;BR /&gt;m_lpDemuxerParams-&amp;gt;m_pRules[1].m_bValidAfterInit = true;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;m_pSplitter-&amp;gt;Init(*m_lpDemuxerParams);&lt;BR /&gt;m_pSplitter-&amp;gt;Run();&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;Now the Splitter is able to identify VBI-data and videos and I could start to work on the data.&lt;BR /&gt;First look for the number of the VBI-track and save it in m_nVbiTrack:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;Ipp32u i;&lt;BR /&gt;Ipp32u m_nVbiTrack;&lt;BR /&gt;UMC::SplitterInfo* pSplitterInfo = NULL;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;m_pSplitter-&amp;gt;GetInfo(&amp;amp;pSplitterInfo);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;for (i=0; i&amp;lt; pSplitterInfo-&amp;gt;m_nOfTracks; i++) {&lt;BR /&gt; if (pSplitterInfo-&amp;gt;m_ppTrackInfo&lt;I&gt;-&amp;gt;m_isSelected) {&lt;BR /&gt; if (pSplitterInfo-&amp;gt;m_ppTrackInfo&lt;I&gt;-&amp;gt;m_Type &amp;amp; UMC::TRACK_ANY_VBI) {&lt;BR /&gt; m_nVbiTrack = i;&lt;BR /&gt; vm_string_printf("VBI found...
");&lt;BR /&gt; }&lt;BR /&gt; }&lt;BR /&gt;}&lt;/I&gt;&lt;/I&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;Then extract the data of track number m_nVbiTrack out of the 
datastream:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;UMC::MediaData vbiData;&lt;BR /&gt;PID pid;&lt;BR /&gt;size_t sizePid = sizeof(pid);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Arial" color="#000000"&gt;while(!bStopFlag) {&lt;BR /&gt; while(UMC::UMC_ERR_NOT_ENOUGH_DATA == m_pSplitter-&amp;gt;GetNextData(&amp;amp;vbiData, m_nVbiTrack)) {&lt;BR /&gt; vm_time_sleep(5);&lt;BR /&gt; }&lt;BR /&gt; memcpy(&amp;amp;pid, vbiData.GetDataPointer(), sizePid);&lt;BR /&gt; pid.process();&lt;BR /&gt;}&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 03 Dec 2007 13:41:14 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Mpeg2-ts-with-VBI-Data/m-p/889466#M11274</guid>
      <dc:creator>rippi</dc:creator>
      <dc:date>2007-12-03T13:41:14Z</dc:date>
    </item>
    <item>
      <title>Re: Mpeg2 ts with VBI Data</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Mpeg2-ts-with-VBI-Data/m-p/889467#M11275</link>
      <description>Thanks for the info... We've changed UMC in a different way , but this seems as a better one.&lt;BR /&gt;</description>
      <pubDate>Fri, 14 Dec 2007 13:13:19 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Mpeg2-ts-with-VBI-Data/m-p/889467#M11275</guid>
      <dc:creator>Ali_Gökalp_P_</dc:creator>
      <dc:date>2007-12-14T13:13:19Z</dc:date>
    </item>
  </channel>
</rss>

