JP2010183336A - 情報処理装置および情報処理方法 - Google Patents
情報処理装置および情報処理方法 Download PDFInfo
- Publication number
- JP2010183336A JP2010183336A JP2009024791A JP2009024791A JP2010183336A JP 2010183336 A JP2010183336 A JP 2010183336A JP 2009024791 A JP2009024791 A JP 2009024791A JP 2009024791 A JP2009024791 A JP 2009024791A JP 2010183336 A JP2010183336 A JP 2010183336A
- Authority
- JP
- Japan
- Prior art keywords
- pcr
- mpeg2
- packet
- continuity
- time interval
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Television Signal Processing For Recording (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
【課題】不連続な箇所があるMPEG2−TSの再生時に破綻を生じさせないことが可能な、新規かつ改良された技術を提供する。
【解決手段】情報処理装置100は、MPEG2−TSからPCRを検出し、PCRの値であるPCR値を取得するとともに、PCRを持つTSパケットのMPEG2−TSにおける位置を示すPCR位置情報を取得するPCR検出部102と、TSパケットから検出したcontinuity_counter値からMPEG2−TSにおける不連続位置を示す不連続位置情報を取得するcontinuity_counter検出部103と、PCR検出部102が取得したPCR値およびPCR位置情報と、continuity_counter検出部103が検出したcontinuity_counter値と、に基づいて、MPEG2−TSの各TSパケット間の時間間隔を算出するタイムスタンプ用時間間隔算出部105とを備える。
【選択図】図2
【解決手段】情報処理装置100は、MPEG2−TSからPCRを検出し、PCRの値であるPCR値を取得するとともに、PCRを持つTSパケットのMPEG2−TSにおける位置を示すPCR位置情報を取得するPCR検出部102と、TSパケットから検出したcontinuity_counter値からMPEG2−TSにおける不連続位置を示す不連続位置情報を取得するcontinuity_counter検出部103と、PCR検出部102が取得したPCR値およびPCR位置情報と、continuity_counter検出部103が検出したcontinuity_counter値と、に基づいて、MPEG2−TSの各TSパケット間の時間間隔を算出するタイムスタンプ用時間間隔算出部105とを備える。
【選択図】図2
Description
本発明は、情報処理装置および情報処理方法に関する。詳細には、MPEG2−TSをネットワークに送信する際のタイムスタンプ付加システムに関する。
近年、テレビ放送をハードディスク等の記録媒体に記録し、後から視聴を行うことが可能なテレビ放送受信機やパーソナルコンピュータ等のデジタル機器が多く出回っている。日本の放送においては、圧縮・伸張方式の国際標準規格であるMPEG(Moving Picture Experts Group)の中でも通信システムや放送システムへの適用が考慮されているMPEG2システムが規格として採用されている。その中でも伝送時に誤りの発生する環境での伝送・蓄積に適したMPEG2−TS(MPEG2 トランスポートストリーム)と呼ばれる形式が用いられている。MPEG2−TSには送信側が意図したとおりに受信側で再生可能となるようにシステムの基準参照値プログラムクロックリファレンス(PCR)が埋め込まれて送信される。同様に、再生時に参照される時刻管理情報プログラムタイムスタンプ(PTS)、デコード時に参照される時刻管理情報デコーディングタイムスタンプ(DTS)などのデータも埋め込まれて送信される。
放送波を受信する受信機では、入力されるトランスポートストリーム(TS)からプログラムアソシエーションテーブル(PAT)/プログラムマップテーブル(PMT)を取得し、目的のプログラム識別子(PID)を判別する。受信機は、判別したPIDを持つTSパケットを取得し、映像、音声、PCR等に分離する。受信機は、受信したPCRを使用してシステムタイムクロック(STC)の初期値を設定し、定期的に受信されるPCRの値とSTCの値とを比較し、デコードのタイムベースとなる27MHzのシステムクロック周波数の誤差を調節する。
一般に、放送局などの送信側の装置から送出されたTSパケットに対して、受信側の装置において映像および音声のデコード処理がなされる。その際に、受信側の装置は、TSパケットなどを一時的に蓄積する受信バッファのアンダーフローおよびオーバフローが発生せず、かつ、映像と音声との間の同期処理が正常になるように実装される。
しかしながら、IPTVなどのネットワークを経由してMPEG2−TSを用いた映像コンテンツが伝送される場合や、DLNAなどを利用したホームネットワーク環境下でMPEG2−TSで記録された映像コンテンツの視聴を行う場合がある。これらの場合には、送信側装置がTSパケットの出力タイミングを制御したとしても、ネットワーク内においてパケットが異なる経路を通過する可能性があり、またネットワーク内の中継機器が他の通信も同時に制御するため、TSパケットの到達時間が送信間隔に従うとは限らない。また、時刻情報であるPCRは、全てのTSパケットに含まれるわけではなく、約100ms毎にしか含まれないため、送信側装置によって期待されるタイミングでネットワークを経由してTSパケットを受信することが難しい。
よって、ネットワークを経由してTSパケットが伝送される場合においては、伝送する側の装置がTSパケットにタイムスタンプを付加し、受信機がTSパケットに付加されているタイムスタンプを使用して、当該TSパケットをデコーダに出力するタイミングを制御する方法が有効である。例えば、TSパケットにタイムスタンプを付加する技術としては様々なものが開示されている(例えば、特許文献1参照)。また、例えば、タイムスタンプが付加されていないMPEG2−TSからPCRを検出し、MPEG2−TSの中でPCRを持つTSパケットの位置情報をもとにTSパケットに対してハードウェア処理で高速にタイムスタンプを付加することができる。これによって、組み込み機器においてもCPU(Central Processing Unit)を占有せずに、小さいハードウェアブロックによって低コストでMPEG2−TSに対するタイムスタンプ付加処理を行うことが可能となる。
一方、ユーザによる編集によって、MPEG2−TSに対してシーンのカットやシーン順序の入れ替えが行われた場合、PCR値の連続性が失われ、PCR値のジャンプが生じる可能性がある。例えば、シーンのカットが行われた場合、カットが行われた前後のPCR−PCR間に注目すると、カットが行われた分だけTSパケット数が減少する。このために、PCR−PCR間の時間間隔が編集前よりも短くなっているにもかかわらず、PCR値は大きく増加していることとなる。ここで、例えばPCRのみを参照してタイムスタンプを付加して行った場合、ネットワークを経由して再生する際にMPEG2−TSのカットの前後にあるPCR−PCR間においては、デコーダへの入力タイミングが著しく早くなる可能性があった。また、シーン順が逆になった場合においてはデコーダへの入力タイミングが遅くなる可能性があった。また、デコーダへの入力タイミングがずれると、映像の乱れを生じる可能性があるという問題があった。
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、不連続な箇所があるMPEG2−TSの再生時に破綻を生じさせないことが可能な、新規かつ改良された技術を提供しようとするものである。
上記課題を解決するために、本発明のある観点によれば、MPEG2−TSを記憶する記憶部と、記憶部が記憶するMPEG2−TSからPCRを検出し、PCRの値であるPCR値を取得するとともに、PCRを持つTSパケットのMPEG2−TSにおける位置を示すPCR位置情報を取得するPCR検出部と、continuity_counter値検出のために指定されたPIDを保持し、記憶部が記憶するMPEG2−TSからPIDを持つTSパケットを検出し、検出したTSパケットからcontinuity_counter値を検出し、検出したcontinuity_counter値からMPEG2−TSにおける不連続位置を示す不連続位置情報を取得するcontinuity_counter検出部と、PCR検出部が取得したPCR値およびPCR位置情報と、continuity_counter検出部が検出したcontinuity_counter値とに基づいて、記憶部が記憶するMPEG2−TSの各TSパケット間の時間間隔を算出するタイムスタンプ用時間間隔算出部と、タイムスタンプ用時間間隔算出部が算出したタイムスタンプ用時間間隔に基づいて、記憶部が記憶するMPEG2−TSの各TSパケットにタイムスタンプを付加するタイムスタンプ付加部と、を備える、情報処理装置が提供される。
上記したPCR検出部は、記憶部が記憶するMPEG2−TSからPATを取得し、取得したPATを解析することでPMT_PIDを検出し、検出したPMT_PIDに基づいて記憶部が記憶するからMPEG2−TSからPMTを取得し、取得したPMTを解析することでPCR_PIDを検出し、検出したPCR_PIDと等しいPIDをもつTSパケットがPCRを持つTSパケットであると認識することとしても良い。
上記したPCR検出部は、PCR位置情報として、MPEG2−TSの先頭から最初に存在するPCRの次のPCRまでのTSパケットの数と、MPEG2−TSに存在するPCR間のTSパケットの数と、MPEG2−TSの最後のPCRからMPEG2−TSの終わりまでのTSパケットの数とを取得することとしても良い。
上記したPCR検出部は、PCR位置情報として、MPEG2−TSに存在する各PCRについて、MPEG2−TSの先頭からのバイト数またはMPEG2−TSの先頭からのTSパケットの数を取得することとしても良い。
上記したcontinuity_counter検出部は、PIDを持つTSパケットから前回取得したcontinuity_counter値を保持値として保持しており、保持値とPIDを持つTSパケットから今回取得したcontinuity_counter値とを比較することでMPEG2−TSの不連続を検出することとしても良い。
上記したcontinuity_counter検出部は、不連続位置情報として、MPEG2−TSの先頭からのバイト数またはMPEG2−TSの先頭からのTSパケットの数を取得することとしても良い。
上記したタイムスタンプ用時間間隔算出部は、PCR間のTSパケットの時間間隔としては、TSパケットの前後のPCR値に基づいて、TSパケット毎に均等に算出して割り付け、MPEG2−TSの先頭から最初に存在するPCRの次のPCRまでのTSパケットの時間間隔としては、その直後のPCR間のTSパケットの時間間隔を使用し、MPEG2−TSの最後のPCRからMPEG2−TSの終わりまでのTSパケットの時間間隔としては、その直前のPCR間のTSパケットの時間間隔を使用することとしても良い。
上記したタイムスタンプ用時間間隔算出部は、continuity_counter検出部がMPEG2−TSに不連続を検出した場合には、不連続な位置に存在するとされたTSパケットの直前に存在するPCRを持つTSパケットから不連続な位置に存在するとされたTSパケットまでのTSパケット群の時間間隔としては、直前のPCR間のTSパケットの時間間隔を使用し、不連続な位置に存在するとされたTSパケットから次のPCRまでのTSパケット群の時間間隔としては、直後のPCR間のTSパケットの時間間隔を使用することとしても良い。
上記したタイムスタンプ用時間間隔算出部は、continuity_counter検出部がMPEG2−TSに不連続を検出した場合には、不連続な位置に存在するとされたTSパケットが含まれるPCR間のTSパケットの時間間隔としては、直前のPCR間のTSパケットの時間間隔を使用することとしても良い。
以上説明したように本発明によれば、不連続な箇所があるMPEG2−TSの再生時に破綻を生じさせないことが可能である。
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。なお、説明は以下の順序で行う。
1. 第1実施形態
1−1. 情報処理装置の概要
1−2. 情報処理装置の詳細説明
2. 本実施形態の変形例
3. まとめ
1−1. 情報処理装置の概要
1−2. 情報処理装置の詳細説明
2. 本実施形態の変形例
3. まとめ
<1.第1実施形態>
本発明の第1実施形態について説明する。
本発明の第1実施形態について説明する。
[1−1.情報処理装置の概要]
本発明の実施形態にかかる情報処理装置の概要について説明する。本実施形態では、MPEG2−TSのcontinuity_counterに注目する。continuity_counterは、MPEG2−TSの各TSパケットに含まれる4bitのカウンタであり、同一のPIDをもつTSパケットである場合、ストリームの先頭から順に1ずつ加算された値を持つ。ただし、adaptation_field_controlが00もしくは10である場合、もしくはduplicate packetである場合には、前のTSパケットと同じ値を持つ。ゆえに、任意のPIDのcontinuity_counterを参照し、保持している値との差分が0もしくは1以外のとき、MPEG2−TSの不連続を認識できる。この情報をタイムスタンプ付加に用いることにより、ネットワークを介しても再生時に破綻を生じないタイムスタンプ付加システムを、CPUへの負担が小さく、小規模なハードウェアで実現する。
本発明の実施形態にかかる情報処理装置の概要について説明する。本実施形態では、MPEG2−TSのcontinuity_counterに注目する。continuity_counterは、MPEG2−TSの各TSパケットに含まれる4bitのカウンタであり、同一のPIDをもつTSパケットである場合、ストリームの先頭から順に1ずつ加算された値を持つ。ただし、adaptation_field_controlが00もしくは10である場合、もしくはduplicate packetである場合には、前のTSパケットと同じ値を持つ。ゆえに、任意のPIDのcontinuity_counterを参照し、保持している値との差分が0もしくは1以外のとき、MPEG2−TSの不連続を認識できる。この情報をタイムスタンプ付加に用いることにより、ネットワークを介しても再生時に破綻を生じないタイムスタンプ付加システムを、CPUへの負担が小さく、小規模なハードウェアで実現する。
本実施形態にかかる情報処理装置は、タイムスタンプが無いMPEG2−TSに対し、MPEG2−TSからPCRを検出し、ストリーム中のPCRを持つTSパケットの位置情報を取得する機能を有するPCR検出部を備える。また、情報処理装置は、任意のPIDのcontinuity_counter値を検出し、保持しているcontinuity_counter値と比較し、MPEG2−TSの不連続を検出して報告するcontinuity_counter検出部を備える。また、情報処理装置は、CPU上のソフトウェアによるTSパケット間の時間間隔を算出するタイムスタンプ用時間間隔算出部を備える。タイムスタンプ用時間間隔算出部によって、ハードウェアによるタイムスタンプ付加処理をサポートすることができる。また、情報処理装置は、タイムスタンプ用時間間隔算出部によって得られた時間間隔に基づいて、TSパケットに対してハードウェア処理で高速にタイムスタンプを付加する機能を有するタイムスタンプ付加部を供える。
本実施形態にかかる情報処理装置は、PCR−PCR間のTSパケットに対しては、PCRを基にして均等にタイムスタンプの割り付けを行う。情報処理装置は、continuity_counter検出部によりMPEG2−TSの不連続が検出された場合、その不連続点に該当するTSパケットまでのTSパケットには直前のPCR−PCR間のTSパケットと同様にタイムスタンプを付加し、不連続点に該当するTSパケットから次のPCRまでのTSパケットには直後のPCR−PCR間のTSパケットと同様にタイムスタンプを付加する。
[1−2.情報処理装置の詳細説明]
本発明の実施形態にかかる情報処理装置として、編集により不連続な点が生じているMPEG2−TSのストリーム(情報処理装置のメモリ中に存在)に対して、PCR検出を行い、タイムスタンプを付加するまでの機能について説明する。
本発明の実施形態にかかる情報処理装置として、編集により不連続な点が生じているMPEG2−TSのストリーム(情報処理装置のメモリ中に存在)に対して、PCR検出を行い、タイムスタンプを付加するまでの機能について説明する。
図1に、本実施形態により実現するMPEG2−TSに対するタイムスタンプ付加の概念図を示す。図1に示すように、本実施形態にかかる情報処理装置は、188バイトのMPEG2−TSパケットに対し、PCRと同様に27MHzクロックを基準とするタイムスタンプを4バイト付加し、タイムスタンプ付きMPEG2−TSを作り出すものである。
図2に、本実施形態にかかる情報処理装置の機能構成図を示す。また、図3に、本実施形態にかかる情報処理装置が実行する処理の流れを示すフローチャートを示す。図2において、情報処理装置(100)内のシステムバス(101)に、PCR検出部(102)およびcontinuity_counter検出部(103)が一体となったハードウェア機能ブロックが接続されている。また、システムバス(101)に、タイムスタンプ付加部(107)、PCRが含まれないTSパケットのタイムスタンプ用時間間隔算出部(105)をソフトウェアの機能として持つCPU(104)が接続されている。CPU(104)は、演算処理装置および制御装置として機能し、メモリ(106)に記録された各種プログラムに従って、情報処理装置(100)内の動作全般またはその一部を制御する。CPU(104)には、MPEG2−TSが含まれる記憶部の一例としてのメモリ(106)がつながっている。メモリ(106)は、例えば、RAM(Random Access Memory)等により構成され、CPU(104)の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を一次記憶する。
初期状態として、メモリ(106)中にタイムスタンプの付いていないMPEG2−TSがあるとする(ステップS200)。
CPU(104)は、PCR検出部(102)およびcontinuity_counter検出部(103)が一体となったハードウェア機能ブロックにメモリ(106)中のMPEG2−TSを渡す(ステップS201)。本実施形態では、PCR検出部(102)とcontinuity_counter検出部(103)とを同じハードウェア機能ブロックとして示しているが、それぞれ別のハードウェア機能ブロックとしても良い。また、PCR検出部(102)、continuity_counter検出部(103)は、ハードウェアブロックによって実現されることとしてもよいが、ソフトウェアによって実現されることとしてもよい。PCR検出部(102)、continuity_counter検出部(103)の機能をハードウェアによって実現する場合、CPU(104)がDMAディスクリプタにMPEG2−TSのアドレス等を記述することによってPCR検出部(102)に直接メモリ(106)からMPEG2−TSの受け渡しをすることが高速化のために望ましい。この場合には、例えば、図2には未記載であるDMA(Direct Memory Access) Interfaceを介してメモリ(106)・CPU(104)・ローカルバスを接続する。
PCR検出部(102)は、受け取ったMPEG2−TSを解析し、ストリームからPCRを検出する。また、continuity_counter検出部(103)は、そのTSパケットのcontinuity_counter値の不連続を検出する(ステップS202)。
図4に、PCR・continuity_counter検出動作(ステップS202)の処理フローを示す。ここでは、PCR_PIDが既知であり、PCR検出部(102)に設定されているとする。その他の例として、PCR検出部(102)がPATを解析することでPMT_PIDを取得し、取得したPMT_PIDに基づいてPMTを検出し、検出したPMTを解析することでPCR_PIDを取得することとしても良い。また、PMT_PIDが既知であり、PCR検出部(102)が、既知のPMT_PIDに基づいてPMTを検出し、検出したPMTを解析することでPCR_PIDを取得しても良い。
また、continuity_counter検出部(103)は、PIDに所定の値が設定されているTSパケットについて、continuity_counter値の連続性のチェック対象とする。PIDに設定される所定の値は、例えば、videoを識別するためのPIDとし、videoを識別するためのPIDが既知であり、continuity_counter検出部(103)に設定されていることとする。しかし、これに限定されず、continuity_counter検出部(103)がPMTを解析し、PMTのProgram Map Tableに含まれるstream_type等から所望のPIDを検出し、検出したPIDを設定することとしても良い。
また、continuity_counter検出部(103)は、videoのみならず、audio等を識別するためのPIDを設定することとしても良い。さらに、本実施形態では、continuity_counterの連続性チェック対象となるTSパケットのPIDは1種類であるとしているが、continuity_counter検出部(103)は、複数のPIDを設定し、PID毎にcontinuity_counterを保存し、連続性をチェックすることとしても良い。例えば、continuity_counter検出部(103)は、複数のPIDを設定することにより、編集があっても偶然にcontinuity_counter値の連続性が生じる可能性を低くすることができる。
本実施形態においては、先に記したとおり、PCR検出部(102)とcontinuity_counter検出部(103)とを同一のハードウェアによって構成されることとしている。このため、PCR検出部(102)とcontinuity_counter検出部(103)とは、各TSパケットのPIDに対する判定結果を共有しているとする。これにより、ハードウェアに対するストリームの転送回数を削減することができ、回路規模を縮小することができる。当然ながら、PCR検出部(102)とcontinuity_counter検出部(103)とが、それぞれ各TSパケットのPIDに対する判定を行うこととしても良い。
本実施形態においては、情報処理装置(100)が、入力されたストリームをTSパケットごとに解析していき、continuity_counter検出部(103)がTSパケットに対してcontinuity_counter検出の動作を行い、その後にPCR検出部(102)がPCR検出動作を行うこととする。しかし、この順序については限定されるものではない。
continuity_counter検出部(103)は、チェック対象のTSパケットのPIDがcontinuity_counter値をチェックするために指定したPID(continuity_counter検出用指定_PID)であるか否かを判断する(ステップS301)。continuity_counter検出部(103)は、チェック対象のTSパケットのPIDがcontinuity_counter値をチェックするために指定したPIDであると判断した場合には(ステップS301で「Yes」)、ステップS302に進む。continuity_counter検出部(103)は、チェック対象のTSパケットのPIDがcontinuity_counter値をチェックするために指定したPIDではないと判断した場合には(ステップS301で「No」)、ステップS306に進む。
continuity_counter検出部(103)は、continuity_counter値の保持値が存在するか否かを判断する(ステップS302)。continuity_counter検出部(103)は、保持値が存在しないと判断した場合には(ステップS302で「No」)、ステップS305に進む。continuity_counter検出部(103)は、保持値が存在すると判断した場合には(ステップS302で「Yes」)、保持値とチェック対象のTSパケットのcoutinuity_counter値とが等しい、もしくは、保存値+1がcontinuity_counter値と等しいか否かを判断する(ステップS303)。
continuity_counter検出部(103)は、保持値とチェック対象のTSパケットのcoutinuity_counter値とが等しい、もしくは、保存値+1がcontinuity_counter値と等しいと判断した場合には(ステップS303で「Yes」)、ステップS305に進む。continuity_counter検出部(103)は、保持値とチェック対象のTSパケットのcoutinuity_counter値とが等しくない、かつ、保存値+1がcontinuity_counter値と等しくないと判断した場合には(ステップS303で「No」)、MPEG2−TSに不連続が生じたと判定し、現在のTSパケットの位置情報をタイムスタンプ用時間間隔算出部(105)に報告する(ステップS304)。ここでは、continuity_counter検出部(103)は、位置情報として直前のPCRからのパケット数を報告するとする。
continuity_counter検出部(103)は、保存値をそのcontinuity_counter値で上書きする(ステップS305)。continuity_counter検出部(103)は、入力されたMPEG2−TSにおいて指定されたPIDをもつTSパケットのうちで最初のパケットであった場合、continuity_counter値を保存する。
これらの処理後、PCR検出部(102)は、チェック対象のTSパケットのPIDがPCR_PIDと等しいか否かを判断する(ステップS306)。PCR検出部(102)は、PIDがPCR_PIDと等しくないと判断した場合には(ステップS306で「No」)、ステップS310に進む。PCR検出部(102)は、PIDがPCR_PIDと等しいと判断した場合には(ステップS306で「Yes」)、TSパケットにadaptation_fieldがあるか否か(「adaptation_field_controlが10または11」、かつ、「adaptation_field_lengthが0でない」が成立するか否か)を判断する(ステップS307)。
PCR検出部(102)は、TSパケットにadaptation_fieldがないと判断した場合には(ステップS307で「yes」)、ステップS310に進む。PCR検出部(102)は、TSパケットにadaptation_fieldがあると判断した場合には(ステップS307で「yes」)、PCR_flagが1であるか否かを判断する(ステップS308)。PCR検出部(102)は、PCR_flagが1ではないと判断した場合には(ステップS308で「No」)、ステップS310に進む。PCR検出部(102)は、PCR_flagが1であると判断した場合には(ステップS308で「Yes」)、PCR値、PCR位置を取得し、タイムスタンプ用時間間隔算出部(105)に報告する。
PCR検出部(102)は、チェック対象のTSパケットでストリームが終わりであるか否かを判断する(ステップS310)。PCR検出部(102)は、チェック対象のTSパケットでストリームが終わりでないと判断した場合には(ステップS310で「No」)、次のパケットの先頭に移動し(ステップS311)、ステップS301に戻る。PCR検出部(102)は、チェック対象のTSパケットでストリームが終わりであると判断した場合には(ステップS310で「Yes」)、ステップS202を終了する。
図4に示した例では、PCR検出部(102)は、PCR値を得た場合、PCR位置報告をするとあるが、報告される位置は、例えば、入力ストリームの先頭からPCRが存在する位置までのバイト数であっても良い。また、例えば、入力ストリームの先頭からPCRが存在する位置までのTSパケット数であっても良く、PCR−PCR間のTSパケット数であっても良い。ここでは、PCR検出部(102)は、位置情報として、入力ストリームの先頭から最初の次のPCRを含むTSパケットまでのTSパケット数、以降は、PCRから次のPCRまでのTSパケット数を報告し、ストリーム終了時においては、最後のPCRからストリーム終わりまでのTSパケット数を報告することとする。また、CPU(104)にとって、PCR検出部(102)に入力したストリームの長さは既知であり、ストリームに存在する最後のPCRからストリームが終わるまでのTSパケット数はわかるものとする。
PCR検出部(102)およびcontinuity_counter検出部(103)は、ストリームの処理が完了したらCPU(104)に対して検証完了通知を行う(ステップS203)。図3においては、ストリーム全体の検出完了後に検出完了通知を出すとしているが、PCR値、PCR位置報告、不連続の位置報告はストリームの全パケットの解析が終了してから通知してもよいし、PCR値を取得する毎に、または、不連続を発見する毎に行ってもよい。
図5に、CPUによるソフトウェア処理での時間間隔算出の処理ブロック図を示す。ここでは、図5において、γで示すPID=videoであるTSパケットの直前に、ユーザによるMPEG2−TSの編集に伴うカットが入り、ストリーム連続性が失われているとする。
上記したPCR・continuity_coutner検出動作(ステップS202)によると、PID=video(本実施形態のMPEG2−TSにおいてvideoのPIDを指すとする)であるαβの両パケットにおいてはcontinuity_counterが連続している。しかし、γのcontinuity_counter値=12と直前の同一PIDのTSパケットであるβのcontinuity_counter値=保存値=8とは等しくなく、保存値+1=8+1≠12である。そのため、continuity_counter検出部(103)によって、タイムスタンプ用時間間隔算出部(105)に不連続の位置報告が行われる。
CPU(104)上のタイムスタンプ用時間間隔算出部(105)は、PCR検出・continuity_counter検出が完了した場合、もしくはPCR値、PCR位置報告、不連続の位置報告を受けた場合、TSパケットの時間間隔算出を行う(ステップS204)。
CPU(104)上のタイムスタンプ用時間間隔算出部(105)は、得られたPCR値、PCR位置報告、不連続位置報告をもとに、入力ストリームを以下のように処理ブロックに分割する。
入力ストリームの先頭から最初の次のPCRまでに存在するTSパケットによって構成される処理ブロック(U1)、
PCR−PCR間に存在するTSパケットによって構成される処理ブロック(U2)、
不連続位置報告によって不連続位置であるとされたTSパケットまでのTSパケットを含む処理ブロック(U3)、
不連続位置報告によって不連続位置であるとされたTSパケットから新しいタイムベースでのPCR−PCR間のTSパケットによって構成される処理ブロック(U1’)、
入力ストリームに存在する最後のPCRからストリームの終わりまでのTSパケットによって構成される処理ブロック(U2’)
PCR−PCR間に存在するTSパケットによって構成される処理ブロック(U2)、
不連続位置報告によって不連続位置であるとされたTSパケットまでのTSパケットを含む処理ブロック(U3)、
不連続位置報告によって不連続位置であるとされたTSパケットから新しいタイムベースでのPCR−PCR間のTSパケットによって構成される処理ブロック(U1’)、
入力ストリームに存在する最後のPCRからストリームの終わりまでのTSパケットによって構成される処理ブロック(U2’)
タイムスタンプ用時間間隔算出部(105)は、例えば、図5に示したMPEG2−TSにおいては、γの位置を示す位置情報によって不連続位置報告を受ける。そのために、タイムスタンプ用時間間隔算出部(105)は、不連続位置報告で示されたTSパケットまでを同一の処理ブロック(U3)として扱い、そのTSパケット以降を、直後のPCR−PCR間と同じタイムベースで処理する処理ブロック(U1’)として扱う。つまり、continuity_counter値の不連続が検出されたTSパケットは、前後の処理ブロック(U3、U1’)に含まれることとなる。
また、タイムスタンプ用時間間隔算出部(105)は、処理ブロック毎に、TSパケット間の時間間隔(Q)、先頭パケットのタイムスタンプ値(V)を算出する。タイムスタンプ付加処理をハードウェアで行うため、V,Qは整数として扱うものとし、タイムスタンプ用時間間隔算出部(105)は、V,Qを算出するために、以下の設定値を計算するものとする。
Vnum:処理ブロックUnumにおける先頭TSパケットに付与されるタイムスタンプ値
Qnum:処理ブロックUnumにおけるTSパケット間の時間間隔
Rnum:処理ブロックUnumにおけるTSパケット間の時間間隔の余剰
Cnum:処理ブロックUnumにおける先頭TSパケットでのタイムスタンプ値のキャリーオーバ
Nnum:処理ブロックUnumにおけるPCR−PCR間のTSパケット数(最初のPCRを含む)。
Qnum:処理ブロックUnumにおけるTSパケット間の時間間隔
Rnum:処理ブロックUnumにおけるTSパケット間の時間間隔の余剰
Cnum:処理ブロックUnumにおける先頭TSパケットでのタイムスタンプ値のキャリーオーバ
Nnum:処理ブロックUnumにおけるPCR−PCR間のTSパケット数(最初のPCRを含む)。
U1ブロックにおいては、各設定値をそれぞれV1,Q1,R1,C1,N1、また、図5に示すように、入力ストリームの先頭パケットからPCR直前のパケットまでのTSパケット数をN0とすると、
Q1=(PCR2−PCR1)/N1
R1=(PCR2−PCR1) mod N1
C1=(−R1×N0) mod N1
となる。
Q1=(PCR2−PCR1)/N1
R1=(PCR2−PCR1) mod N1
C1=(−R1×N0) mod N1
となる。
V1は、ストリームの先頭においては任意の値に設定可能である。また、continuity_counter検出部(103)によって不連続報告が行われ、新たに処理ブロックが分けられる場合において、タイムスタンプ用時間間隔算出部(105)は、直前のブロックの最後のパケットのタイムスタンプ値をV1とする。つまり、U1’においては、U3でγにつけたタイムスタンプ値をV1として扱う。
また、U2ブロックにおいては各設定値をそれぞれV2,Q2,R2,C2,N2とすると、
Q2=(PCR3−PCR2)/N2
R2=(PCR3−PCR2) mod N2
C2=0
であり、
V2=V1+Q1(N0+N1)+(R1(N0+N1)+C1)/N1
=V1+((PCR2−PCR1)×(N0+N1)+C1)/N1
となる。
Q2=(PCR3−PCR2)/N2
R2=(PCR3−PCR2) mod N2
C2=0
であり、
V2=V1+Q1(N0+N1)+(R1(N0+N1)+C1)/N1
=V1+((PCR2−PCR1)×(N0+N1)+C1)/N1
となる。
一般化すると、Un(n>=2)ブロックにおいては、
Qn=(PCRn+1−PCRn)/Nn
Rn=(PCRn+1−PCRn) mod Nn
Cn=0
Vn=Vn−1+(PCRn−PCRn−1)
となる。
Qn=(PCRn+1−PCRn)/Nn
Rn=(PCRn+1−PCRn) mod Nn
Cn=0
Vn=Vn−1+(PCRn−PCRn−1)
となる。
以上により、タイムスタンプ用時間間隔算出部(105)は、TSパケット間の時間間隔を算出する。これにより、ストリームの先頭から最初の次のPCRを得るまで、また、最後のPCRからストリームが終わるまでの夫々のTSパケットにおいてもタイムスタンプを付加することが可能となる。
図6に、TSパケットに付加されるタイムスタンプ時刻を説明するための図を示す。図6に示すように、PCR付きのTSパケットについては、そのPCR時刻に従ってタイムスタンプ時刻が付与される。また、PCR付きではないTSパケットについては、その前後に存在するPCR付きパケットのPCR時刻の増加分をTSパケット数で除して得られる値(図6に示したグラフの傾き)に従ってタイムスタンプ時刻が付与される。ストリームの先頭から最初の次のPCRを含むTSパケットまでのTSパケットについては、その直後の傾きに従ってタイムスタンプ時刻が付与される。ストリームに存在する最後のPCRからストリームが終わるまでについては、その直前の傾きに従ってタイムスタンプ時刻が付与される。
また、不連続が検出されたTSパケットをストリームの基点として再度タイムスタンプ付加処理を行う。これにより、MPEG2−TSのストリームが不連続になることでPCRのタイムベースに切り替わりが生じても、同等のタイムスタンプ用時間間隔を算出することが可能となり、一定の間隔のタイムスタンプを割り付けることができる。
CPU(104)は、タイムスタンプ用時間間隔算出処理後、タイムスタンプ付加部(107)に時間間隔算出結果とMPEG2−TSとを渡す(ステップS205)。タイムスタンプ付加部(107)は、処理ブロックごとにソフトウェアによる時間間隔の算出で得られた値を利用し、下の式に従ってタイムスタンプの付加を行う(ステップS206)。
各処理ブロックのTSパケットのタイムスタンプ値は、
Vn[m]:処理ブロックUnのm番目のパケットのタイムスタンプ値
Cn[m]:処理ブロックUnのm番目のパケットでのタイムスタンプ値のキャリーオーバとすると、
Vn[1]=Vn、Cn[1]=Cnとし、
m>=2のとき、
Vn[m]=Vn[m−1]+Qn+1(但し、(Cn[m−1]+Rn)>=Nnであるとき)
Vn[m]=Vn[m−1]+Qn(但し、(Cn[m−1]+Rn)<Nnであるとき)
Cn[m]=Cn[m−1]+Rn−Nn(但し、(Cn[m−1]+Rn)>=Nnであるとき)
=Cn[m−1]+Rn (但し、(Cn[m−1]+Rn)<Nnであるとき)
となる。
Vn[m]:処理ブロックUnのm番目のパケットのタイムスタンプ値
Cn[m]:処理ブロックUnのm番目のパケットでのタイムスタンプ値のキャリーオーバとすると、
Vn[1]=Vn、Cn[1]=Cnとし、
m>=2のとき、
Vn[m]=Vn[m−1]+Qn+1(但し、(Cn[m−1]+Rn)>=Nnであるとき)
Vn[m]=Vn[m−1]+Qn(但し、(Cn[m−1]+Rn)<Nnであるとき)
Cn[m]=Cn[m−1]+Rn−Nn(但し、(Cn[m−1]+Rn)>=Nnであるとき)
=Cn[m−1]+Rn (但し、(Cn[m−1]+Rn)<Nnであるとき)
となる。
これにより、キャリーオーバを考慮することで実際のPCR値と各TSパケットに付加するタイムスタンプ値のずれを最小にすることが可能である。また、このタイムスタンプ付加処理は、値を参照し、比較して付加タイムスタンプ値を決定するのみであり、非常に小さなハードウェア規模で実現可能である。
タイムスタンプ付加部(107)は、タイムスタンプを付加したMPEG2−TSをメモリ(106)に書き戻す(ステップS207)。ここで、ハードウェア処理の高速化のためにDMAを用い、CPU(104)がDMAディスクリプタにMPEG2−TSのアドレス等を記述することでタイムスタンプ付加部(107)にMPEG2−TSの受け渡しがなされることが望ましい。同様に、タイムスタンプ付加部(107)からメモリ(106)にタイムスタンプ付きMPEG2−TSを書き戻す際においても、DMAを用いて処理されることが望ましい。
以上の実施形態に拠れば、タイムスタンプが無く、不連続な箇所があるMPEG2−TSに対し、情報処理装置(100)は、ストリーム中のPCRを持つTSパケットおよびcontinuity_counter値の不連続な点を検出することができる。また、情報処理装置(100)は、検出した点に相当するTSパケットの位置情報を取得し、PCR値と不連続な点であるとしたTSパケットの位置情報とを参照することができる。これによって、MPEG2−TSに不連続が生じてもネットワークを介しても再生時に破綻を生じないタイムスタンプ付加システム(情報処理装置(100))を、CPU(104)上への負担を小さく、小規模なハードウェア規模で実現できる。
<2.本実施形態の変形例>
なお、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
なお、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
<3.まとめ>
本実施形態によれば、情報処理装置は、タイムスタンプが無く、不連続な箇所があるMPEG2−TSに対し、ストリーム中のPCRを持つTSパケットおよび任意のPIDのTSパケットのcontinuity_counterが不連続であるTSパケットの位置情報を取得することができる。そして、情報処理装置は、PCR値と不連続なTSパケットの位置情報とを参照することでPCRの不連続が生じてもネットワークを介しても再生時に破綻を生じないタイムスタンプ付加システムを実現することができる。
本実施形態によれば、情報処理装置は、タイムスタンプが無く、不連続な箇所があるMPEG2−TSに対し、ストリーム中のPCRを持つTSパケットおよび任意のPIDのTSパケットのcontinuity_counterが不連続であるTSパケットの位置情報を取得することができる。そして、情報処理装置は、PCR値と不連続なTSパケットの位置情報とを参照することでPCRの不連続が生じてもネットワークを介しても再生時に破綻を生じないタイムスタンプ付加システムを実現することができる。
情報処理装置は、PCR−PCR間のTSパケットに対しては、PCRを基にして均等にタイムスタンプの割り付けを行う。また、情報処理装置は、continuity_counter検出部によりMPEG2−TSの不連続が検出された場合、不連続を検出したTSパケットまでのTSパケットには直前のPCR−PCR間のTSパケットと同様にタイムスタンプを付加する。また、情報処理装置は、不連続を検出したTSパケットから次のPCRまでのTSパケットには直後のPCR−PCR間のTSパケットと同様にタイムスタンプを付加する。これにより、CPU上のソフトウェアへの負担を小さくし、小規模なハードウェアでMPEG2−TSに対するタイムスタンプ付加処理を実現することができる。
100 情報処理装置
102 PCR検出部
103 continuity_counter検出部
104 CPU
105 タイムスタンプ用時間間隔算出部
106 メモリ(記憶部)
107 タイムスタンプ付加部
102 PCR検出部
103 continuity_counter検出部
104 CPU
105 タイムスタンプ用時間間隔算出部
106 メモリ(記憶部)
107 タイムスタンプ付加部
Claims (10)
- MPEG2−TSを記憶する記憶部と、
前記記憶部が記憶する前記MPEG2−TSからPCRを検出し、前記PCRの値であるPCR値を取得するとともに、前記PCRを持つTSパケットの前記MPEG2−TSにおける位置を示すPCR位置情報を取得するPCR検出部と、
continuity_counter値検出のために指定されたPIDを保持し、前記記憶部が記憶する前記MPEG2−TSから前記PIDを持つTSパケットを検出し、検出した前記TSパケットからcontinuity_counter値を検出し、検出した前記continuity_counter値から前記MPEG2−TSにおける不連続位置を示す不連続位置情報を取得するcontinuity_counter検出部と、
前記PCR検出部が取得した前記PCR値および前記PCR位置情報と、前記continuity_counter検出部が検出した前記continuity_counter値とに基づいて、前記記憶部が記憶する前記MPEG2−TSの各TSパケット間の時間間隔を算出するタイムスタンプ用時間間隔算出部と、
前記タイムスタンプ用時間間隔算出部が算出した前記タイムスタンプ用時間間隔に基づいて、前記記憶部が記憶する前記MPEG2−TSの各TSパケットにタイムスタンプを付加するタイムスタンプ付加部と、
を備える、情報処理装置。 - 前記PCR検出部は、
前記記憶部が記憶する前記MPEG2−TSからPATを取得し、取得した前記PATを解析することでPMT_PIDを検出し、検出した前記PMT_PIDに基づいて前記記憶部が記憶する前記からMPEG2−TSからPMTを取得し、取得した前記PMTを解析することでPCR_PIDを検出し、検出した前記PCR_PIDと等しいPIDをもつTSパケットが前記PCRを持つTSパケットであると認識する、
請求項1に記載の情報処理装置。 - 前記PCR検出部は、
前記PCR位置情報として、前記MPEG2−TSの先頭から最初に存在するPCRの次のPCRまでのTSパケットの数と、前記MPEG2−TSに存在する前記PCR間のTSパケットの数と、前記MPEG2−TSの最後のPCRから前記MPEG2−TSの終わりまでのTSパケットの数とを取得する、
請求項1に記載の情報処理装置。 - 前記PCR検出部は、
前記PCR位置情報として、前記MPEG2−TSに存在する各PCRについて、前記MPEG2−TSの先頭からのバイト数または前記MPEG2−TSの先頭からのTSパケットの数を取得する、
請求項1に記載の情報処理装置。 - 前記continuity_counter検出部は、
前記PIDを持つ前記TSパケットから前回取得したcontinuity_counter値を保持値として保持しており、前記保持値と前記PIDを持つ前記TSパケットから今回取得した前記continuity_counter値とを比較することで前記MPEG2−TSの不連続を検出する、
請求項1に記載の情報処理装置。 - 前記continuity_counter検出部は、
前記不連続位置情報として、前記MPEG2−TSの先頭からのバイト数または前記MPEG2−TSの先頭からのTSパケットの数を取得する、
請求項1に記載の情報処理装置。 - 前記タイムスタンプ用時間間隔算出部は、
前記PCR間のTSパケットの時間間隔としては、当該TSパケットの前後のPCR値に基づいて、TSパケット毎に均等に算出して割り付け、前記MPEG2−TSの先頭から最初に存在するPCRの次のPCRまでのTSパケットの時間間隔としては、その直後のPCR間のTSパケットの時間間隔を使用し、前記MPEG2−TSの最後のPCRから前記MPEG2−TSの終わりまでのTSパケットの時間間隔としては、その直前のPCR間のTSパケットの時間間隔を使用する、
請求項1に記載の情報処理装置。 - 前記タイムスタンプ用時間間隔算出部は、
前記continuity_counter検出部が前記MPEG2−TSに不連続を検出した場合には、不連続な位置に存在するとされたTSパケットの直前に存在するPCRを持つTSパケットから不連続な位置に存在するとされたTSパケットまでのTSパケット群の時間間隔としては、直前のPCR間のTSパケットの時間間隔を使用し、不連続な位置に存在するとされたTSパケットから次のPCRまでのTSパケット群の時間間隔としては、直後のPCR間のTSパケットの時間間隔を使用する、
請求項1に記載の情報処理装置。 - 前記タイムスタンプ用時間間隔算出部は、
前記continuity_counter検出部が前記MPEG2−TSに不連続を検出した場合には、不連続な位置に存在するとされたTSパケットが含まれるPCR間のTSパケットの時間間隔としては、直前のPCR間のTSパケットの時間間隔を使用する、
請求項1に記載の情報処理装置。 - MPEG2−TSを記憶する記憶部と、PCR検出部と、continuity_counter検出部と、タイムスタンプ用時間間隔算出部と、タイムスタンプ付加部と、を備える、情報処理装置が、
前記PCR検出部により、前記記憶部が記憶する前記MPEG2−TSからPCRを検出し、前記PCRの値であるPCR値を取得するとともに、前記PCRを持つTSパケットの前記MPEG2−TSにおける位置を示すPCR位置情報を取得するステップと、
前記continuity_counter検出部により、continuity_counter値検出のために指定されたPIDを保持し、前記記憶部が記憶する前記MPEG2−TSから前記PIDを持つTSパケットを検出し、検出した前記TSパケットからcontinuity_counter値を検出し、検出した前記continuity_counter値から前記MPEG2−TSにおける不連続位置を示す不連続位置情報を取得するステップと、
前記タイムスタンプ用時間間隔算出部により、前記PCR検出部が取得した前記PCR値および前記PCR位置情報と、前記continuity_counter検出部が検出した前記continuity_counter値とに基づいて、前記記憶部が記憶する前記MPEG2−TSの各TSパケット間の時間間隔を算出するステップと、
前記タイムスタンプ付加部により、前記タイムスタンプ用時間間隔算出部が算出した前記タイムスタンプ用時間間隔に基づいて、前記記憶部が記憶する前記MPEG2−TSの各TSパケットにタイムスタンプを付加するステップと、
を含む、情報処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009024791A JP2010183336A (ja) | 2009-02-05 | 2009-02-05 | 情報処理装置および情報処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009024791A JP2010183336A (ja) | 2009-02-05 | 2009-02-05 | 情報処理装置および情報処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010183336A true JP2010183336A (ja) | 2010-08-19 |
Family
ID=42764522
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009024791A Withdrawn JP2010183336A (ja) | 2009-02-05 | 2009-02-05 | 情報処理装置および情報処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010183336A (ja) |
-
2009
- 2009-02-05 JP JP2009024791A patent/JP2010183336A/ja not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4475336B2 (ja) | タイムスタンプ付加装置およびタイムスタンプ付加方法、並びにプログラム | |
EP2329654B1 (en) | Devices of digital video reception and output having error detection and concealment circuitry and techniques | |
US20080259962A1 (en) | Contents reproducing apparatus | |
US20110066744A1 (en) | Transitioning between Multiple Services in an MPEG Stream | |
US10491944B2 (en) | Decoding device, reception device, transmission device, transmission/reception system, decoding method, and storage medium having decoding program stored therein | |
US20060013123A1 (en) | Method and apparatus for processing transmission error in DMB system | |
US8831405B2 (en) | Transmission controller, reception controller, transmission control method, reception control method and transmission control program | |
CN111031385B (zh) | 视频播放的方法及装置 | |
US20170055045A1 (en) | Recovering from discontinuities in time synchronization in audio/video decoder | |
US11128911B2 (en) | Decoding device, reception device, transmission device, transmission/reception system, decoding method, and storage medium having decoding program stored therein | |
JP2018026778A (ja) | 送信装置、送信方法、受信装置および受信方法 | |
US8285107B2 (en) | Packet sequence restoring controller and method thereof | |
KR20050022556A (ko) | 고신뢰 복호화 장치 및 방법 | |
JP6957186B2 (ja) | 情報処理装置、情報処理方法、プログラム、および記録媒体製造方法 | |
JP2007259313A (ja) | ストリーム再生方法及び再生装置 | |
JP2010183336A (ja) | 情報処理装置および情報処理方法 | |
KR102210509B1 (ko) | 멀티미디어 시스템에서 컨텐츠를 변환하는 방법 및 장치 | |
CN103444197B (zh) | 内容接收装置以及内容保存方法 | |
EP3534617A1 (en) | Method, device and computer program for recording digital transport stream packets | |
EP3573341A1 (en) | Device and method for transmitting and receiving signal in multimedia system | |
JP2010130665A (ja) | コンテンツ管理装置及びコンテンツ管理方法、プログラム | |
JP2009060324A (ja) | タイムスタンプ付加装置およびタイムスタンプ付加方法、並びにプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20120501 |