JP4686048B2 - Pixel arithmetic unit - Google Patents

Pixel arithmetic unit Download PDF

Info

Publication number
JP4686048B2
JP4686048B2 JP2001125119A JP2001125119A JP4686048B2 JP 4686048 B2 JP4686048 B2 JP 4686048B2 JP 2001125119 A JP2001125119 A JP 2001125119A JP 2001125119 A JP2001125119 A JP 2001125119A JP 4686048 B2 JP4686048 B2 JP 4686048B2
Authority
JP
Japan
Prior art keywords
pixel
unit
data
processing
frame
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.)
Expired - Fee Related
Application number
JP2001125119A
Other languages
Japanese (ja)
Other versions
JP2002008025A (en
Inventor
広之 岡
督三 清原
誠 平井
浩三 木村
康介 ▲よし▼岡
英志 西田
隆治 松浦
広之 森下
敏昭 辻
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2001125119A priority Critical patent/JP4686048B2/en
Publication of JP2002008025A publication Critical patent/JP2002008025A/en
Application granted granted Critical
Publication of JP4686048B2 publication Critical patent/JP4686048B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Image Processing (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、画像をリサイズするためのフィルタリング回路を含む画素演算装置に関する。
【0002】
【従来の技術】
近年、デジタル映像機器の技術進歩が著しく、動画の圧縮処理/伸張処理、リサイズ等を扱ういわゆるメディアプロセッサが実用化されている。
画像のリサイズには、FIR(finite impulse response)フィルタがよく用いられる。
【0003】
図1は、従来技術におけるFIRフィルタ処理を行う回路例を示すブロック図である。同図はタップ数7、係数が対称なFIRフィルタである。
同図において、データ入力端子1001より時系列的に入力されたデータは、遅延器1002、1003、1004、1005、1006、1007とこの順に順次転送される。フィルタ係数が対称である場合、つまりデータ入力端子の入力及び各遅延器の出力(タップと呼ばれる)に対応する係数が、中央のタップ(遅延機1004の出力)に対して対称である場合、各タップのデータにフィルタ係数を乗算するのではなく、同じ係数のタップのデータ同士の加算を行ってから係数を乗算する。
【0004】
例えば、データ入力部1001の入力データと遅延器1007の出力データは、加算器1008で加算され、さらに乗算器1008にて加算結果と係数h0とが乗算される。遅延器1002の出力と遅延器1006の出力は、加算器1009で加算され、さらに、乗算器1009にて加算結果と係数h1とが乗算される。
乗算器1011〜乗算器1014の各出力データは、加算器1015により加算される。加算器1015の出力データはフィルタ処理結果としてデータ出力端子1016から時系列的に出力される。係数h0〜h3は画像の縮小率に応じて定められる。例えば縮小率が1/2であれば、時系列の出力データを1/2に間引くことにより縮小画像が得られる。
【0005】
また、フィルタ係数が対称に選ばれるのは、直線位相(位相特性が周波数に対して直線になること)が得られることにより画像の視覚上好ましいからである。
【0006】
【発明が解決しようとする課題】
しかしながら、上記従来の方法では、画像データに対してフィルタリング処理を行う場合、回路の構成上、画像を構成する画素データを端から順に入力していくので、1クロックで入力できる画素データは1つであるため、処理速度を高めるには動作周波数を高める必要がある。高い動作周波数での動作は、コスト及び消費電力大きくなるという問題がある。
【0007】
また、従来の方法ではタップ数毎に回路が異なるため自由度がなく、タップ数毎別に回路を設けると莫大なコストがかかってしまう。
本発明の第1の目的は、タップ数を可変にすることができ、周波数を上げずに処理を高速化するフィルタリング処理を行う画素演算装置を提供することにある。
【0008】
本発明の第2の目的は、さらにフィルタリング処理だけでなくMC(動き補償)処理にも利用可能で、回路規模の小型化を図った画素演算装置を提供することにある。
第3の目的は、さらにフィルタリング処理だけでなくME(動き予測)処理にも利用可能であり、回路規模の小型化を図った画素演算装置を提供することにある。
【0009】
第4の目的は、さらにフィルタリング処理だけでなく、デジタル映像機器におけるOSD(On Screen Display)処理にも利用であり、回路規模の小型化を図った画素演算装置を提供することにある。
【0010】
【課題を解決するための手段】
上記第1の目的を達成する画素演算装置は、フィルタ処理を行う画素演算装置であって、N個の画素処理手段と、N個の画素データ及びフィルタ係数を供給する供給手段と、N個の画素処理手段を並列に動作させる制御手段とを備える。
各画素処理手段は、供給手段に供給された画素データとフィルタ係数とを用いて演算した後、各画素処理手段に対して隣接する画素処理手段から画素データを取得し、取得した画素データを用いて演算して演算結果を累積する。前記制御手段は、隣接する画素処理手段からの画素データの取得と、取得した画素データを用いた演算及び累積とをタップ数に応じた回数繰り返すようN個の画素処理手段を制御する。
【0011】
ここで、前記N個の画素処理手段は、N個の画素データを右シフトする第1シフタと、N個の画素データを左シフトする第2シフタを形成する。各画素処理手段は、隣接する2つの画素処理手段からシフトアウトされる2つの画素データを用いて演算する。
上記第2の目的を達成する画素演算装置は、画素データとして差分画像の画素データと参照フレームの画素データとを供給手段から供給する。
【0012】
【発明の実施の形態】
本発明の画素演算ユニットは、主に(a)画像の拡大/縮小に用いられるフィルタ処理、(b)動き補償(Moving Compensation、以下ME)処理、(c)OSD(On Screen Display)処理、(d)動き予測(Moving Estimation、以下ME)処理などを選択的に実行するように構成される。(a)フィルタ処理については、画素演算ユニットは、でタップ数を固定することなく可変とし、水平方向又は垂直方向に連続する複数の画素(例えば16画素)を並列に処理する。さらに、垂直方向のフィルタ処理は、圧縮動画データの伸長処理と同期して行う。
【0013】
以下、本発明の実施の形態における画素演算ユニットについて次の順に説明する。
1 メディアプロセッサの構成
1.1 画素演算ユニットの構成
1.2 画素並列処理部の構成
2.1 フィルタ処理
2.2 MC(動き補償)処理
2.3 OSD(オンスクリーンディスプレイ)処理
2.4 ME(動き予測)処理
3.1 垂直フィルタ処理(その1)
3.1.1 1/2縮小
3.1.2 1/4縮小
3.2 垂直フィルタ処理(その2)
3.2.1 1/2縮小
3.2.2 1/4縮小
4 変形例
<1 メディアプロセッサの構成>
本実施形態における画素演算ユニットがメディア処理(圧縮音声動画データの伸長処理、音声動画データの圧縮処理など)を行うメディアプロセッサに内臓されている場合について以下説明する。メディアプロセッサは、例えばデジタルTV放送を受信するセットトップボックス、テレビ受像機、DVD録画再生装置などに実装される。
【0014】
図2は、画素演算ユニットを備えるメディアプロセッサの構成を示すブロック図である。同図においてメディアプロセッサ200は、デュアルポートメモリ100、ストリームユニット201、入出力バッファ(以下I/Oバッファと略す)202、セットアッププロセッサ203、ビットストリームFIFO204、可変長符号復号部(VLD)205、可変長符号復号部205、変換エンジン(Transfer Engine、以下TE)206、画素演算ユニットA(以下POUA)207、画素演算ユニットB(以下POUB)208、POUC209、オーディオユニット210、IOP211、入出力プロセッサ(以下IOP)211、ビデオバッファメモリ212、ビデオユニット213、ホストユニット214、RE215、フィルタ部216を備える。
【0015】
デュアルポートメモリ100は、外部メモリ220に対する入出力ポート(以下外部ポート)と、メディアプロセッサ200内部に対する入出力(以下内部ポートと呼ぶ)と、キャッシュメモリとを備え、メディアプロセッサ200内の各構成要素のうち外部メモリ220にデータを読み書きする構成要素(以下マスターデバイス)からのアクセス要求を内部ポートから受け付け、受け付けたアクセス要求に従って外部メモリ220をアクセスする。その際、デュアルポートメモリ100は、内部のキャッシュメモリに外部メモリ220のデータの一部をキャッシングする。また、外部メモリ220はSDRAMやRDRAMなどのメモリであり、圧縮動画データ、圧縮音声データ、復号後の音声データ、復号後の動画データなどを一時的に記憶する。
【0016】
ストリームユニット201は、外部からストリームデータ(いわゆるMPEGストリーム)を入力し、入力されたストリームデータをビデオエレメンタリーストリーム、オーディオエレメンタリーストリームに分離し、それぞれをI/Oバッファ202に書き込む。
I/Oバッファ202は、ビデオエレメンタリーストリーム、オーディオエレメンタリーストリーム、オーディオデータ(伸長されたオーディオデータ)を一時的に保持するバッファメモリである。ビデオエレメンタリーストリーム、オーディオエレメンタリーストリームはそれぞれストリームユニット201からI/Oバッファ202に格納され、さらにIOP211の制御によってデュアルポートメモリ100を介して外部メモリ220に格納される。オーディオデータは、IOP211の制御によって外部メモリ220からデュアルポートメモリ100を介してI/Oバッファ202に格納される。
【0017】
セットアッププロセッサ203は、オーディオエレメンタリーストリームのデコード(伸長)と、ビデオエレメンタリーストリームのマクロブロックのヘッダ解析とを行う。オーディオエレメンタリーストリーム及びビデオエレメンタリーストリームは、IOP211の制御によって、外部メモリ220からデュアルポートメモリ100を介してビットストリームFIFO204に転送される。セットアッププロセッサ203はビットストリームFIFO204からオーディオエレメンタリーストリームを読み出してデコードし、デコード後のオーディオデータをセットアップメモリ217に格納する。セットアップメモリ217内のオーディオデータは、IOP211によってデュアルポートメモリ100を介して外部メモリ220に転送される。また、セットアッププロセッサ203は、ビットストリームFIFO204からビデオエレメンタリーストリームを読み出してマクロブロックヘッダを解析し、解析結果をVLD205に通知する。
【0018】
ビットストリームFIFO204は、ビデオエレメンタリーストリームを可変長符号復号部205に、オーディオエレメンタリーストリームをセットアッププロセッサ203に供給するためのFIFOメモリである。ビデオエレメンタリーストリーム及びオーディオエレメンタリーストリームは、IOP211の制御によって外部メモリ220からデュアルポートメモリ100を介してビットストリームFIFO204に転送される。
【0019】
VLD205は、ビットストリームFIFO204から供給されるビデオエレメンタリーストリームに含まれる可変長符号を復号する。この復号結果はマクロブロック単位のDCT係数群である。
TE206は、VLD205の復号結果に対してマクロブロック単位にIQ(逆量子化)処理及びIDCT(逆DCT)処理を行う。これらの処理結果はマクロブロックである。1マクロブロックは、4つの輝度ブロック(Y1〜Y4)と2つの色差ブロック(Cb、Cr)からなる。1ブロックは8×8画素である。但し、Pピクチャ、Bピクチャについては1ブロックは8×8個の差分値としてTE206から出力され。TE206は復号結果をデュアルポートメモリ100を介して外部メモリ220に格納する。
【0020】
POUA207は、主に(a)フィルタ処理、(b)MC処理、(c)OSD処理、(d)動き予測(Moving Estimation)処理などを選択的に実行する。
(a)のフィルタ処理では、POUA207は外部メモリ220に格納されたビデオデータ(フレームデータ)に含まれる16個の画素データを並列にフィルタリングし、フィルタリング後の16個の画素を間引く又は補間することにより縮小、拡大する。縮小語の後のデータはPOUC209の制御によってデュアルポートメモリ100を介して外部メモリ220に格納される。
【0021】
(b)のMC処理では、POUA207は、TE206によって外部メモリ220に格納されたPピクチャ及びBピクチャについてのIQ及びIDCT処理結果(つまり画素データの差分値)と、参照フレーム中の画素データとを16並列に加算する。16組の差分値と画素データは、セットアッププロセッサ203におけるマクロブロックヘッダ解析によって検出された動きベクトルに従って、POUC209によってPOUA207に入力される。
【0022】
(c)OSD処理では、POUA207は、外部メモリ220等に格納されたOSD画像(静止画)をデュアルポートメモリ100を介して入力し、外部メモリ220内の表示用フレームデータに上書きする。ここでOSD画像とは、ユーザのリモコン操作などに応じて表示されるメニュー画像や、時刻表示、チャネル番号表示などをいう。
【0023】
(d)のME処理とは、未圧縮のフレームデータ内の符号化対象のマクロブロックに対して、参照フレーム中の相関性の高い矩形領域を探索し、符号化対象のマクロブロックから相関性の最も高い矩形領域を指す動きベクトルを求める処理である。POUA207は、符号化対象のマクロブロックの画素と、探索領域内の矩形領域の画素との差分を16個並列で算出する。
【0024】
POUB208は、POUA207と同一構成であり、上記(a)〜(d)の処理を動的に分担する。
POUC209は、POUA207及びPOUB208に対する画素データ群の供給と、処理結果の外部メモリ220への転送とを制御する。
オーディオユニット210は、I/Oバッファ202に格納されたオーディオデータを出力する。
【0025】
IOP211は、メディアプロセッサ200内のデータ入出力(データ転送)を制御する。データ転送には次の種類がある。第1は、I/Oバッファ202に格納されたストリームデータをデュアルポートメモリ100を介して外部メモリ220内のストリームバッファ領域に転送することである。第2は、外部メモリ220に格納されたビデオエレメンタリーストリーム及びオーディオエレメンタリーストリームをデュアルポートメモリ100を介してビットストリームFIFO204に転送することである。第3は、外部メモリ220に格納されたオーディオデータをデュアルポートメモリ100を介してI/Oバッファ202に転送することである。
【0026】
ビデオユニット213は、外部メモリ220のビデオデータ(画像フレーム)から2,3ライン分の画素データを読み出して、ビデオバッファメモリ212に格納し、その2,3ライン分の画素データを映像信号に変換して外部に接続されたテレビ受像器等のディスプレィ装置に出力する。
ホストユニット(HOST)214は、外部のホストマイコンからの指示を受け取り、指示に応じてMPEGデコード、MPEGエンコード、OSD処理、縮小・拡大処理など開始・終了を制御する。
【0027】
レンダリングエンジン(RE)215は、マスターデバイスであり、コンピュ−タ・グラフィックスにおけるレンダリング処理を行う。外部に専用LSI218とが接続されている場合に間でデータ入出力を行う。
フィルタ216は、静止画データの拡大縮小処理を行う。外部に専用LSI218とが接続されている場合に間でデータ入出力を行う。
【0028】
上記ではメディアプロセッサが、ストリームユニット201からストリームデータを入力してデコード(伸長)する場合を中心に説明したが、圧縮されていないビデオデータ及びオーディオデータをエンコード(圧縮)する場合は、逆の流れとなる。その際、POUA207(又はPOUB208)はME処理を、TE206はDCT処理及びQ(量子化)処理を、VLD205は可変長符号化を、行う。
<1.1 画素演算ユニットの構成>
図3は、画素演算ユニットの構成を示すブロック図である。
【0029】
POUA207とPOUB208は同じ構成であるため、ここではPOUA207を説明する。
同図のようにPOUA207は、画素並列処理部21、入力バッファ群22出力バッファ群23、命令メモリ24、命令デコーダ25、指示回路26、DDA回路27を備える。
【0030】
画素並列処理部21は、画素転送部17、16個の画素処理部1〜画素処理部16、画素転送部18を備え、入力バッファ群22から入力される複数の画素を対象に上記(a)フィルタ処理、(b)MC処理、(c)OSD処理、(d)ME)処理を行い、出力バッファ群23に出力する。(a)〜(d)の各処理は、マクロブロック単位すなわち16画素を16回(16ライン分)繰り返すことにより終了する。各処理の起動は、POUC209により制御される。また、画素転送部17は、フィルタ処理において16個の画素のさらに左側(又は上側)の複数画素(ここでは8画素)を保持し、クロック毎に右シフトする。画素転送部18は、フィルタ処理において16個の画素のさらに右側(又は下側)の複数画素(ここでは8画素)を保持し、クロック毎に左シフトアウトする。
【0031】
入力バッファ群22は、POUC209の制御により、デュアルポートメモリ100から転送される処理対象となる複数の画素を保持し、さらにフィルタ処理ではフィルタ係数も保持する。
出力バッファ群23は、画素並列処理部21による処理結果(16画素に対応する16の処理結果)の並びを任意に変更して一時的に保持する。フィルタ処理では画素の並びを変更して保持することにより画素の間引き(縮小時)又は補間(拡大時)とを行う。
【0032】
命令メモリ24は、フィルタ処理用のマイクロプログラム(フィルタμP)、MC処理用のマイクロプログラム(MCμP)、OSD処理用のマイクロプログラム(OSDμP)、ME処理用のマイクロプログラム(MEμP)を記憶している。これ以外にも命令メモリ24は、マクロブロックのフォーマット変換用のマイクロプログラム、画素の数値表現を変換するためのマイクロプログラムなどを記憶している。ここで、マクロブロックのフォーマットとは、MPEG規格に定められている「4:2:0」、「4:2:2」、「4:4:4」などのY、Cb、Crブロックの画素のサンプリングレートの比率をいう。画素の数値表現には画素のとりうる値として0〜255で表現される場合(一般的なMPEGデータ等)と−128〜127で表現される場合(DVカメラ等)がある。
【0033】
命令デコーダ25は、命令メモリ24からマイクロプログラム中のマイクロコードを逐次読み出して解読し、解読結果に従ってPOUA207内の各部を制御する。
指示回路26は、POUC209から命令メモリ24のどのマイクロプログラムを起動すべきかの指示(開始アドレス等)を受付けて、指示されたマイクロプログラムを起動する。
【0034】
DDA回路27は、フィルタ処理において、入力バッファ群22に保持されたフィルタ係数群の選択制御を行う。
<1.2 画素並列処理部の構成>
図4、図5は、画素並列処理部の左半分、右半分の詳細な構成を示すブロック図である。
【0035】
図4において画素転送部17は、8個の入力ポートA1701〜H1708、画素データ保持し1クロック時間遅延する8個の遅延器A1701〜遅延器H1709、入力ポートの画素データと左の遅延器出力の内一方を選択する7個の選択部A1717〜G1723から構成され、入力バッファ群22から並列入力される8画素を8つの遅延器に保持し、8つの遅延器に保持した画素をクロック同期して右シフトする右シフタとして機能する。
【0036】
図5において画素転送部18は画素転送部17と比べシフトする方向が左である点で異なり、これ以外は同様の構成なので説明を省略する。
図4、図5における16個の画素処理部1〜画素処理部16は、いずれも同一構成であるので、画素処理部2を代表として説明する。
画素処理部2は、入力ポートA201〜入力ポートC203と、選択部A204、B205、遅延器A206〜D209、加算器A120、乗算器A211、加算器B212、出力ポートD213とから構成される。
【0037】
選択部A204は、入力ポートA201から入力される画素データと左隣の画素転送部17から出力される画素データとのうち一方を選択する。
選択部A204と遅延器A206は、右隣の画素処理部3から入力される画素データを左隣の画素処理部1にシフト出力する機能も果たす。
選択部B205は、入力ポートB202から入力される画素データと右隣外部メモリ220からシフト出力される画素データとのうち一方を選択する。
【0038】
選択部B205と遅延器B207は、左隣の画素処理部1から入力される画素データを右隣の画素処理部3にシフト出力する機能も果たす。
遅延器A206、遅延器B207はそれぞれ選択部A204、選択部B205に選択された画素データを保持する。
遅延器B207は、入力ポートC203からの画素データを保持する
加算器A120は遅延器A206と遅延器B207から出力される画素データを加算する。
【0039】
乗算器A211は、加算器A120の加算結果と遅延器C208からの画素データとを乗算する。この乗算器A211はフィルタ処理では画素データとフィルタ係数との乗算に利用される。
加算器B212は、乗算器A211の乗算結果を遅延器D209のデータとを加算する。
【0040】
遅延器D109は、加算器B212の加算結果を累積する。
画素処理部2は、これらの構成要素を選択的に組み合わせて動作させることにより上記(a)フィルタ処理、(b)MC処理、(c)OSD処理、(d)ME処理を実行する。これらの構成要素を選択的に組み合わせる動作は、命令メモリ24及び命令デコーダ25によるマイクロプログラム制御によってなされる。
【0041】
図6(a)は、入力バッファ群22の詳細な構成を示すブロック図である。
同図のように入力バッファ群22は、画素転送部17に画素データを供給する8個のラッチ221と、画素処理部1〜16に画素データを供給する16個のラッチ部222と、画素転送部18に画素データを供給する8個のラッチ223とから構成される。これらは、POUC209の制御により外部メモリ220からデュアルポートメモリ100を介して画素データ群が転送される。
【0042】
各ラッチ部222は、画素処理部の入力ポートA、Bに画素データを供給する2個のラッチと、画素処理部の入力ポートCに画素データ又はフィルタ係数を供給する選択部224からなる。
図6(b)は、選択部224の詳細な構成を示すブロック図である。
同図のように選択部224は、8つのラッチ224a〜224hと、8つのラッチからデータの何れか1つを選択するセレクタ224iとからなる。
【0043】
ラッチ224a〜224hは、フィルタ処理においてフィルタ係数a0〜a7(又はa0/2、a1〜a7)を保持する。これらフィルタ係数は、POUC209により外部メモリ220からデュアルポートメモリ100を介してラッチ224a〜224hに転送される。
セレクタ224iは、DDA回路27の制御によってクロックに同期してラッチ224aから224hに順次選択される。このようにフィルタ係数の画素処理部への供給は、マイクロコードにより直接制御されるのではなく、DDA回路27によりハードウェアにより制御されるので高速化される。
【0044】
図7は、出力バッファ群23の構成を示すブロック図である。
同図のように出力バッファ群23は、16個のセレクタ24a〜24pと、16個のラッチ23a〜23pとからなる。
セレクタ24a〜24pは、いずれも画素処理部1〜16の16個の処理結果が入力され、そのうち1つを選択する。この選択制御は命令デコーダ25によってなされる。
【0045】
ラッチ23a〜23pはそれぞれセレクタ24a〜24pの選択結果を保持する。
例えば、フィルタ処理の結果を1/2に縮小する場合には、16個の画素に対する画素処理部1〜16の16個の処理結果のうち、画素処理部1、3、5、・・・15の処理結果を8個のセレクタ24a〜24hが選択してラッチ23a〜23hに格納され、さらに、次の16個の画素に対する画素処理部1〜16の16個の処理結果のうち、画素処理部2、4、6、・・・16の処理結果を8個のセレクタ24i〜24pが選択してラッチ23i〜23pに格納される。このようにして画素が間引かれ、1/2縮小された16個の画素データが出力バッファ群23に保持され、さらにPOUC209の制御によりデュアルポートメモリ100を介して外部メモリ220に転送される。
<2.1 フィルタ処理>
画素演算ユニットにおけるフィルタ処理の詳細について説明する。
【0046】
POUC209はフィルタ処理の対象となるマクロブロックを特定し、POUA207又はPOUB208に対して32個の画素データ及びフィルタ係数a0/2,a1〜a7を初期値として入力バッファ群22に転送し、さらに指示回路26にタップ数の通知とともにフィルタ処理の開始を指示する。
図8は、画素演算ユニット(POUA207)にてフィルタ処理を行う場合の画素データの初期入力値を示す図である。同図において入力ポート欄は図4、図5に示した各入力ポートを意味する。入力画素欄は、入力バッファ群22から各入力ポートに供給される画素データを意味する。出力ポート欄は図4、図5に示した出力ポートD(加算器B出力)を、出力画素欄はその出力値を意味する。
【0047】
入力ポートに画素データを供給する入力バッファ群22には、図9に示すように水平方向に連続する32個の画素データX1〜X32が、POUC209によって転送されて保持されている。ここでのフィルタ処理の対象はX9〜X24の16個の画素データである。図8のように画素処理部1〜16の入力ポートA及びBには画素データX9〜X24が、入力ポートCには入力バッファ群22にて選択されたフィルタ係数a0/2が初期値として供給される。
【0048】
さらに、入力バッファ群22から初期入力値が画素並列処理部21に供給された後、フィルタ処理として所望するタップ数に応じた数のクロック入力によりフィルタ処理がなされる。
図10は、16個の画素処理部のうち画素処理部1を代表として、その演算過程を示す説明図である。同図では、入力クロック数毎に、画素処理部1内の遅延器A〜Dの保持内容と、加算器Bの出力値とを記している。また、図11は、画素処理部1のクロック入力毎の出力ポートD(加算器B出力)の出力値を示す図である
画素処理部1は最初のクロック入力(CLK1)によって初期入力値として遅延器A及びBは画素データX9を、遅延器Dはフィルタ係数a0/2を保持し、遅延器Dは0クリアされる。このとき選択部A及びBは何れも入力ポートを選択している。その結果加算器Aは(X9+X9)を、乗算器Aは(X9+X9)*a0/2を、加算器Bは(X9*a0/2+0(つまりa0*X9)を出力する(図11参照)。
【0049】
2回目のクロック入力(CLK2)以降では、選択部A及びBは入力ポートA、Bではなく隣接する画素処理部又は画素転送部からのシフト出力を選択する。
2回目のクロック入力(CLK2)によって、遅延器A〜Dには、画素データX10、X8、フィルタ係数a1、a0*X9を保持する。その結果、加算器Bはa0*X9+a1(X10+X8)を出力する(図11参照)。このように2回目は、フィルタ係数a1(遅延器C)と、両隣からシフト出力される画素データの和(加算器A)とを乗算器Aにて乗算している。加算器Bは、この乗算結果と遅延器Dの累積値とを加算している。
【0050】
3回目のクロック入力(CLK3)では、画素処理部1は2回目のクロック入力と同様に動作をすることにより、加算器Bからa0*X9+a1(X10+x8)+a2(X11+X7)を出力する。
4回目〜9回目のクロック入力(CLK4〜CLK9)でも同様に動作をすることにより、加算器Bは図11に示す出力値をそれぞれ出力することになる。
【0051】
このようにして、画素処理部1のファイルタ処理結果(出力データ)は9クロックの場合、
a0・X9+a1(X10+X8)+a2(X11+X7)+a3(X12+X6)
+a4(X13+X5)+a5(X14+X4)+a6(X15+X3)+a7(X16+X2)+a8(X17+X1)
となる。
【0052】
図10、図11ではCLK9までの処理過程を示しているが、入力クロック数はPOUC209から通知されたタップ数に応じて命令デコーダ25の制御によって打ち切られる。すなわち、各画素処理部は、タップ数3の場合はCLK2でフィルタ処理を終了し、タップ数5の場合はCLK3で終了し、タップ数7の場合はCLK4でフィルタ処理を終了する。別言すると、タップ数(2n−1)のフィルタ処理ではn回のクロック入力で終了する。
【0053】
命令デコーダ25は16画素の並列処理を16ライン分繰り返し、これにより4ブロックのフィルタ処理を終える。その際、16個のフィルタ処理結果は、出力バッファ群23において間引き処理または補間処理されることによって縮小又は拡大される。出力バッファ群23の縮小又は拡大後の画素群は16個保持される毎にPOUC209の制御によってデュアルポートメモリ100を介して外部メモリ220に転送される。また、命令デコーダ25は、16ライン目終了時にPOUC209に終了した旨を通知する。POUC209は、次のマクロブロックについて上記と同様にPOUA207を初期入力値とフィルタ係数の供給及びフィルタ処理の開始を指示する。
【0054】
なお、画素処理部2のファイルタ処理結果は9クロックの場合次式となる。
a0・X10+a1(X11+X9)+a2(X12+X8)+a3(X13+X7)
+a4(X14+X6)+a5(X15+X5)+a6(X16+X4)+a7(X17+X3)+a8(X18+X2)
画素処理部3のファイルタ処理結果は9クロックの場合次式となる。
a0・X11+a1(X12+X10)+a2(X13+X9)+a3(X14+X8)
+a4(X15+X7)+a5(X16+X6)+a6(X17+X5)+a7(X18+X4)+a8(X19+X3)
画素処理部4〜16のファイルタ処理結果も画素位置が異なるのみで同様なので省略する。
【0055】
このように画素並列処理部21は、16個の入力画素に対して並列にフィルタ処理を実行し、しかも入力クロック数の制御によってタップ数を任意にすることができる。
なお、図8では、画素処理部1の入力ポートA、B、Cの入力画素が(X9、X9、a0/2)としているが、(X9、0、a0)又は(0、X9、a0)としてもよい。画素処理部2〜16も対象画素が異なるだけで同様にしてもよい。
<2.2 MC(動き補償)処理>
復号対象フレームがPピクチャである場合のMC処理の詳細について説明する。
【0056】
POUC209は指示回路26にMC処理の開始を指示するとともに、MC処理の対象となる復号処理中のフレーム内のマクロブロック(差分値)と、参照フレームにおける動きベクトルが指す矩形領域を特定し、POUA207又はPOUB208に対して16個の差分値D1〜D16及び矩形領域内の16個の画素データP1〜P16を入力バッファ群22に設定する。
【0057】
図12は、画素演算ユニットにてMC処理(Pピクチャ)を行う場合の入出力画素データを示す図である。同図において入力ポート欄は、図4及び図5に示した画素転送部17、画素処理部1〜16、画素転送部18の入力ポートを意味する。入力画素欄は、入力ポートに入力される画素データを意味する。MC処理では画素転送部17及び18は使用されないので、入力画素は何であってもよい(don't care)。出力ポート欄は図4、図5に示した出力ポートD(加算器B出力)を、出力画素欄はその出力値を意味する。
【0058】
図13はMC処理における画素処理部1〜16への入力画素の説明図である。同図に示すようにD1〜D16は復号対象フレームのマクロブロック(MB)中の16個の差分値である。P1〜P16は参照フレームにおいて動きベクトルが指す矩形領域中の16個の画素データである。
MC処理では、画素処理部1〜16内の選択部A、Bはそれぞれ常に入力ポートA、Bを選択する。これにより、入力ポートAからの画素データ、入力ポートBからの差分値は、選択部A、Bを介して遅延器A、Bに入力され保持され、さらに加算器Aにて加算される。この加算結果は乗算器にて1倍され、加算器Bにて0を加えられて出力ポートDから出力される。つまり入力ポートAからの画素データと入力ポートBからの差分値と単純に加算され出力ポートDから出力される。
【0059】
さらに16個の加算結果は出力バッファ群23に格納され、POUC209によりデュアルポートメモリ100を介して外部メモリ220内の復号対象フレームに書き戻される。
以上の処理を復号対象フレームの16画素単位に繰り返すことによりMC処理がなされる。なお、各画素処理部では単純加算しているだけであり1クロック毎に16画素の加算結果を得ることができる。
【0060】
次に復号対象フレームがBピクチャの場合のMC処理を説明する。
図14は、画素演算ユニットにてMC処理(Bピクチャ)を行う場合の入出力画素データを示す図である。同図において入力ポート欄、入力画素欄、出力ポート欄、出力画素欄は、図12と同様である。ただし、入力画素欄は第1クロック(CLK1)と第2クロック(CLK2)と2回に分けて入力される点が図12と異なっている。
【0061】
P1〜P16と、B1〜B16は異なる2つの参照フレームにおいてそれぞれ動きベクトルが指す矩形領域中の16個の画素データである。
MC処理では、画素処理部1〜16内の選択部A、Bはそれぞれ常に入力ポートA、Bを選択する。第1クロック(CLK1)において入力ポートA、Bから選択部A、Bを介して遅延器A、BにP1、B1が保持され、同時に入力ポートCから定数1/2遅延器Cに保持される。これにより乗算器Aから(P1+B1)/2が得られる。第2クロック(CLK2)において、乗算結果(P1+B1)/2が遅延器Dに保持され、同時に入力ポートA、B、Cからの(1,0,D1)が遅延器A、B、Cに保持されるので、乗算器AからのD1と遅延器Dからの(P1+B1)/2とが加算器Bにより加算される。その結果出力ポートから(P1+B1)/2+D1が出力される。
【0062】
さらに16個の加算結果は出力バッファ群23に格納され、POUC209によりデュアルポートメモリ100を介して外部メモリ220内の復号対象フレームに書き戻される。
以上の処理を復号対象フレームの16画素単位に繰り返すことによりBピクチャに対するMC処理がなされる。
<2.3 OSD(オンスクリーンディスプレイ)処理>
POUC209は指示回路26にOSD処理の開始を指示するとともに、外部メモリ220に保持されたOSD画像から順次16個の画素データX1〜X16を読み出して入力バッファ群22に設定する。
【0063】
図15は、画素演算ユニットにてOSD(オンスクリーンディスプレイ)処理を行う場合の入出力画素データを示す図である。
同図において画素転送部17、18は使用されない。画素処理部1〜16の入力ポートAには入力バッファ群22から画素データX1〜X16が、入力ポートBにはそれぞれ0が、入力ポートCにはそれぞれ1が入力される。図16にOSD画像中の16個の画素が順次入力バッファ群22に書き込まれる様子を示す。
【0064】
画素処理部1〜16内の各選択部A、Bは、OSD処理では入力ポートを常に選択する。例えば、画素処理部1では、入力ポートAの画素データX1、入力ポートBの”0”は、それぞれ遅延器A、Bに保持され、さらに加算器Aにより加算される(X1+0=X1)。加算結果は乗算器Aにて入力ポートCから入力された”1”と乗算され加算器Bにて”0”が加算される。その結果、入力ポートAの画素データX1はそのまま加算器Bから出力されることになる。同様に画素処理部2〜画素処理部16からの入力ポートAの画素データX2〜X16がそのまま加算器Bから出力される。
【0065】
加算器Bから出力された画素データX1〜X16は出力バッファ群23に格納され、さらにPOUC209によってデュアルポートメモリ100を介して外部メモリ220内の表示用フレームデータに上書きされる。
上記処理を図16に示したように、OSD画像全体に繰り返すことにより、外部メモリ220内のOSD画像を表示用フレームデータに上書きコピーすることになる。これは、OSD処理のうち最も単純な処理であり、POUA207又はPOUB208は単にOSD画像を16画素単位に中継しているだけである。
【0066】
なお、OSD処理の他の形態として、(1)OSD画像と表示用フレームデータとをブレンドしてもよい。ブレンド率が0.5の場合には、入力バッファ群22から画素処理部1〜画素処理部16の各入力ポートAにOSD画像の画素データ、各入力ポートBに表示用フレームデータの画素データを供給すればよい。
また、ブレンド率がα:(1−α)の場合は、入力バッファ群22から第1クロックにおいて各画素処理部の入力ポートA、B、Cに(OSD画像の画素データ、0、α)を、第2クロックにおいて(0、表示用フレームデータの画素データ、1−α)を供給すればよい。
【0067】
また、OSD画像を縮小表示する場合には、入力バッファ群22からOSD画像に上記フィルタ処理を施し、出力バッファ群23から表示用フレームデータ内の縮小表示すべき位置に上書きコピーすればよい。
さらに、OSD画像をフィルタ処理によって縮小した後上記ブレンドをするようにしてもよい。
<2.4 ME(動き予測)処理>
図17は、画素演算ユニットにてME(動き予測)処理を行う場合の入出力画素データを示す図である。同図の入力画素欄においてX1〜X16は符号化対象のフレーム中のマクロブロックの16画素であり、R1〜R16は参照フレーム中の16×16画素の矩形領域中の16画素である。図18はこれらの画素の関係を示す説明図である。同図の参照フレーム中動きベクトル(MV)探索範囲は、符号化対象のマクロブロックと同じ位置の周辺(例えば水平及び垂直方向に+16画素〜−16画素)の動きベクトルを探索する対象となる範囲である。このMV探索範囲には、16画素×16画素の矩形領域が、画素単位の探索であれば16×16通りの位置に存在し、ハーフペル(1/2画素)単位の探索であれば32×32通りの位置に存在する。図13ではMV探索範囲内の左上の矩形領域のみを図示している。
【0068】
ME処理は、MV探索範囲内の個々の矩形領域と、符合化対象のマクロブロックとの間で、各画素同士の差分の総和を求め、さらに総和が最小の矩形領域(つまり相関性の最も高い矩形領域)と符号化対象マクロブロックとの相対的な位置の変位を動きベクトルと決定する。符号化対象ブロックは相関性の最も高い矩形領域と差分がとられる。
【0069】
入力バッファ群22には、POUC209の制御によって、符号化対象の画素データX1〜X16と、一の矩形領域の画素データR1〜R16とが転送される。この矩形領域内の画素データR1〜R16はクロック毎に矩形領域内の1ライン分が転送される。従って一の矩形領域について16ライン分のR1〜R16が転送される。
図17によれば、図4に示した例えば画素処理部1は、第1クロックで入力ポートAの画素データX1と、入力ポートBの画素データR1との減算及び絶対値化が加算器Aにてなされ、乗算器Aを素通りする(1倍される)。加算器Bは乗算器出力と遅延器Dの保持データとの加算値が出力される。第1クロックでは加算器Bは1ライン目の|X1-R1|を出力することになる。
【0070】
第2クロックでは、遅延器に1ライン目の|X1-R1|が保持されるので、加算器Bは、乗算器Aからの2ライン目の|X1-R1|と遅延器Dに保持された1ライン目の|X1-R1|とを加算する。
第3クロックでは、遅延器に1及び2ライン目の|X1-R1|が累積されるので、加算器Bは、乗算器Aからの3ライン目の|X1-R1|と遅延器Dに保持された1ライン目の|X1-R1|とを加算する。
【0071】
同様の繰り返しにより第16クロックでは、加算器Bは、1〜16ラインまでの|X1-R1|の累積値(Σ|X1-R1|)を出力する。
画素処理部2〜16についても各々累積値(Σ|X1-R1|)〜(Σ|X16-R16|)がを出力する。
これら16個の累積値は第17クロックにおいて出力バッファ群23に保持され、POUC209によって取り出され、16個の累積値の合計が算出された後外部メモリ220内のワークエリアに保存される。
【0072】
以上により一矩形領域と符号化対象マクロブロックとの画素データの差分の総和の計算が終了する。
この後さらに、MV探索範囲内の他の矩形領域についても同様にして差分の総和が算出される。MV探索範囲内の全て矩形領域(あるいは必要な矩形領域)について差分の総和が算出されると、そのうち最小の値をもつ矩形領域が最も相関性の高い矩形領域と判断され、動きベクトルが生成される。
【0073】
なお、上記ME処理では画素処理部からの16個の累積値の合計を別途行っているが、16個の累積値の合計を画素処理部1〜16において算出するようにしてもよい。この場合、一の矩形領域についての16個の累積値は出力バッファ群23からそのまま外部メモリ220のワークエリアに保存しておき、このワークエリアに16個以上の矩形領域について累積値群が保存されたときに、画素処理部1〜16のそれぞれが1つの矩形領域を分担して16個の累積値を順次累積することにより差分の総和を求めるようにすればよい。
【0074】
また、上記ME処理では画素単位で差分の算出を行っているが、ハーフペル単位で行うようにしてもよい。その場合、ハーフラインと実ラインのうち、実ラインに対しては上記のように1クロックで|X1-R1|を算出し、ハーフラインに対しては、例えば2クロックのうち1クロックでハーフペルの画素値((R1+R1')/2)を算出し、次の1クロックで差分|X1-(R1+R1')/2|を算出するようにしてもよい。あるいは、5クロックのうち4クロックでハーフペルの画素値((R1+R1'+R2+R2')/4)を算出し、次の1クロックで差分を算出するようにしてもよい。
<3.1 垂直フィルタ処理(その1)>
図19は、図2に示したメディアプロセッサにおいて垂直フィルタ処理する場合のデータの流れを示した、メディアプロセッサの模式的なブロック図である。
【0075】
同図において、デコーダ部301は、図2中のビデオエレメンタリーストリームをデコード(伸長する)VLD205、TE206及びPOUA207(MC処理)に相当し、ビデオエレメンタリーストリームをデコード(伸長)する。
フレームメモリ302は、外部メモリ220に相当し、デコード結果のビデオデータ(フレームデータ)を保持する
垂直フィルタ303は、POUB208に相当し、垂直方向のフィルタ処理により垂直方向の縮小を行うする。
、バッファメモリ304は、外部メモリ220に相当し、縮小されたビデオデータ(表示用のフレームデータ)を保持する。
【0076】
画像出力部305は、ビデオバッファメモリ212、ビデオユニット213に相当し、表示フレームデータを映像信号に変換して出力する。
なお、POUA207はMC処理を、POUB208は垂直フィルタ処理を分担する。また、水平フィルタ処理による水平方向の縮小は、フレームメモリ302のデコードフレームデータに対してPOUA207、POUB208の一方が行うものとする。
<3.1.1 1/2縮小>
図20は、図19において1/2縮小処理を行う場合のフレームメモリ302、バッファメモリ304のデータ供給状態の時間変化を示す図である。
【0077】
図20において、グラフ701〜703の縦軸は、それぞれフィールドの垂直同期信号の周期Vを単位とする時間を示す。同図では5周期分を記してあり、グラフ70〜703では時間軸が一致している。グラフ701の横軸は、フレームメモリ302データ量を示す。グラフ7702の横軸は、バッファメモリ304のデータ量を示す。グラフ703は画像出力部305において出力中のフレーム(フィールド)を示す。
【0078】
グラフ701中の実線704はデコーダ部301からフレームメモリ302へのフレームデータの供給量を示している。破線705はフレームメモリ302から垂直フィルタ部303へのフレームデータの供給量を示している。
グラフ702中の破線706は垂直フィルタ部303からバッファメモリ304への1stフィールド縮小画像の供給量を示している。一点鎖線707は垂直フィルタ部303からバッファメモリ304への2ndフィールド縮小画像の供給量を示している。
【0079】
またグラフ702中の実線708はバッファメモリ304から画像出力部305への1stフィールド縮小画像データの供給状態を示している。1/2縮小の場合、縮小画像の表示位置はフレームの上半分の位置から下半分の位置までとりうるため、同図の実線709は表示位置に応じてタイミングが異なっている。同様に、実線709はバッファメモリ304から画像出力部305への2ndフィールド縮小画像データの供給状態を示している。
【0080】
グラフ701で示すように、デコーダ部301からフレームメモリ302へのnフレームのフレームデータの供給はn-1フレームの2ndフィールドのフレームメモリ302から垂直フィルタ部303への供給開始直後に開始し、フレームメモリ302から垂直フィルタ部303へのnフレームのフレームデータの供給はnフレームの1stフィールドのフレームメモリ302から垂直フィルタ部303への供給完了直前までに終了するように制御を行う。
【0081】
グラフ702で示すように、垂直フィルタ部303からバッファメモリ304へのnフレームの1stフィールドのフレームデータの供給はn-1フレームの2ndフィールド表示中に、nフレームの2ndフィールドのフレームデータの供給はnフレームの1stフィールド表示中にそれぞれ完了するように制御を行う。
このように装置を制御する事により、デコーダ部301からフレームメモリ302間は、2Vの期間に1フレームのフレームデータを転送する能力があれば十分である。フレームメモリ302から垂直フィルタ部303間は、1Vの期間に1/2フレームのフレームデータを転送する能力があれば十分である。デコーダ部301は2Vの期間に1フレームのフレームデータを生成する演算能力、垂直フィルタ部303は1Vの期間に1/2フレームのフレームデータをフィルタ処理する演算能力があれば十分である。垂直フィルタ部303からバッファメモリ304間は、1Vの期間に1/4フレームのフレームデータを転送する能力があれば十分である。バッファメモリ304から画像出力部305間は、1Vの期間に1/4フレームのフレームデータを転送する能力があれば十分である。フレームメモリ302は、フレームデータ1フレームを保持し、バッファメモリ304は、フレームデータ1/2フレームを保持する容量があれば十分である。
【0082】
次に、図20と対比するため、図21にバッファメモリ304を備えていない場合のデータ供給状態の時間変化を示す。
縮小処理を行わない場合、フレームメモリ302へのnフレームのデジタル画像データの供給は実線506で示すように、破線507で示すn-1フレームの2ndフィールドの垂直フィルタ部303への供給が始まった時から開始し、破線508で示すnフレームの1stフィールドの垂直フィルタ部303への供給が完了する前に終了する。そのため、図5のグラフ上で示す2Vの期間の間に1フレームのデジタル画像データを一定の速度で供給する。
【0083】
また、nフレームの1stフィールドのフレームメモリ302から垂直フィルタ部303へのデジタル画像データの供給は破線508で示すように、実線511が示すフレームメモリ302へのnフレームのデジタル画像データの供給が終了する直後に完了し、続いて2ndフィールドの処理を開始する。そのため、フレームメモリ302から垂直フィルタ部303へのデジタル画像データの供給は、図21のグラフ上で示す1Vの期間の間に1フィールドのデジタル画像データを一定の速度で供給される。
【0084】
ところが、1/2縮小処理を行う場合、フレームメモリ302へのnフレームのデジタル画像データの供給開始が可能となるタイミングは、n-1フレームの2ndフィールドの表示位置によって異なってくる。n-1フレームの2ndフィールドの表示位置によって、フレームメモリ302から垂直フィルタ部303へのデジタル画像データの供給は破線509から510の間のどこかで行われ、フレームメモリ302へのnフレームのデジタル画像データの供給開始が可能となるタイミングが時間的に最も遅れるのは、破線510で示す表示位置の場合である。この場合、1/2縮小画像は画像出力部501の下半分に出力される。また、フレームメモリ302へのnフレームのデジタル画像データの供給は、破線511で示すnフレームの1stフィールドの垂直フィルタ部303への供給が完了する前にに終了していなければならない。そのため、図21のグラフ上で示す1Vの期間の間に1フレームのデジタル画像データを一定の速度で供給する必要があり、縮小を行わない場合に比べ2倍の供給能力が必要となる。
【0085】
また、nフレームの1stフィールドのフレームメモリ302から垂直フィルタ部303へのデジタル画像データの供給は破線511で示すように、実線512が示すフレームメモリ302へのnフレームのデジタル画像データの供給が終了する直後に完了し、続いて2ndフィールドの処理を開始する。そのため、図5のグラフ上で示す1/2Vの期間の間に1フィールドのデジタル画像データを一定の速度で供給する必要があり、縮小を行わない場合に比べ2倍の供給能力が必要となる。垂直フィルタ部303も、供給されるデジタル画像データに見合った性能が要求されるため、縮小を行わない場合に比べ2倍の演算能力が必要となる。
【0086】
また、図23は、図20と対比するため、バッファメモリ304を備えていない場合であって1/4縮小処理を行う場合のデータ供給状態の時間変化を示す。
1/4縮小処理を行う場合のグラフを図23に示す。上記と同様の理由より、フレームメモリ302へのデジタル画像データの供給能力、フレームメモリ302から垂直フィルタ部303への供給能力、垂直フィルタ部の演算能力はそれぞれ縮小処理を行わない場合の4倍が必要となる。このように、バッファメモリ304を備えない場合は、縮小率が上がると必要なピーク性能も大きくなってしまう。
<3.1.2 1/4縮小>
図22は、図19示したメディアプロセッサにて1/4縮小を行う場合の各部のデータ供給状態とその時間変化を示す図である。
【0087】
図22において、グラフの横軸、縦軸は図20と同様である。
グラフ上の実線804はデコーダ部301からフレームメモリ302へのフレームデータの供給状態を示している。グラフ上の破線805はフレームメモリ302から垂直フィルタ部303へのフレームデータの供給状態を示している。グラフ上の破線806は垂直フィルタ部303からバッファメモリ304への1stフィールド縮小画像データの供給状態を示している。グラフ上の破線807は垂直フィルタ部303からバッファメモリ304への2ndフィールド縮小画像データの供給状態を示している。グラフ上の実線808はバッファメモリ304から画像出力部305への1stフィールド縮小画像データの供給状態を示している。グラフ上の実線809はバッファメモリ304から画像出力部305への2ndフィールド縮小画像データの供給状態を示している。
【0088】
同図に示すように、デコーダ部301からフレームメモリ302間は、2Vの期間に1フレームのフレームデータを転送する能力があれば十分である。フレームメモリ302から垂直フィルタ部303間は、1Vの期間に1/2フレームのフレームデータ転送する能力があれば十分である。デコーダ部301は2Vの期間に1フレームのフレームデータを生成する演算能力があれば十分である。垂直フィルタ部303は1Vの期間に1/2フレームのフレームデータをフィルタ処理する演算能力、垂直フィルタ部303からバッファメモリ304間は、1Vの期間に1/8フレームのフレームデータ転送能力、バッファメモリ304から画像出力部305間は、1Vの期間に1/8フレームのフレームデータ転送能力があれば十分である。フレームデータ1フレームを保持できるフレームメモリ302、フレームデータ1/4フレームを保持できるバッファメモリ304がそれぞれ必要となる。
【0089】
これらの各必要性能は最短でも1Vの期間での平均の能力であり、縮小率が大きくなっても短い期間に大きなピーク性能を要求される事がない。また、最も処理性能を必要とされるのが縮小なしの場合である。この場合、デコーダ部301からフレームメモリ302間は、2Vの期間に1フレームのフレームデータ転送能力で足りる。フレームメモリ302から垂直フィルタ部303間は、1Vの期間に1/2フレームのフレームデータ転送能力で足りる。デコーダ部301は2Vの期間に1フレームのフレームデータを生成する演算能力で足りる。垂直フィルタ部303は1Vの期間に1/2フレームのフレームデータをフィルタ処理する演算能力で足りる。垂直フィルタ部303からバッファメモリ304間は、1Vの期間に1/2フレームのフレームデータ転送能力で足りる。バッファメモリ304から画像出力部305間は、1Vの期間に1/2フレームのフレームデータ転送能力で足りる。フレームメモリ302はフレームデータ1フレームを保持でき、バッファメモリ304は、フレームデータ1フレームを保持できればよい。この能力であらゆる垂直縮小処理を行う事ができる。これらにより回路規模を削減し、動作クロックを引き下げる事が出来る。
<3.2 垂直フィルタ処理(その2)>
図24は、メディアプロセッサにおいて垂直フィルタ処理を行う場合のデータの流れを示した模式的なブロック図である。
【0090】
同図は、デコード部401、バッファメモリ402、垂直フィルタ部403、バッファメモリ404、映像出力部405、制御部406からなる。同図は、図19と比べて、デコード部401、垂直フィルタ部403、バッファメモリ404、映像出力部405は、同名の構成要素と同様である。従って同じ点は説明を省略し、異なる点を中心に説明する。
【0091】
バッファメモリ402は、1フレーム分の記憶容量より少ない容量でよい点でフレームメモリ302とは異なる。
垂直フィルタ部403は、垂直方向の64ライン(処理前のフレーム中の4マクロブロックライン)のフィルタ処理を終える毎に制御部406にその旨(フィルタ状態)を通知する点で垂直フィルタ部303と異なる。なお、通知の単位はマクロブロックライン2〜3単位としてもよい。
【0092】
デコード部401は、64ライン単位のデコードを終える毎に制御部406にその旨(デコード状態)を通知する点でデコード部301と異なる。なお、通知の単位は16ライン単位でもよい。
制御部406は、図2中のIOP211に相当し、デコード部401と垂直フィルタ部403の動作状態を、それぞれからの通知に基づいて監視し、垂直フィルタ処理がデコード処理を越さないように、かつデコード処理が垂直フィルタ処理を追い越さないようにデコード部401及び垂直フィルタ部403を制御する。つまり、制御部406の次の2つを制御する。1つは、フィルタ処理の対象となるマクロブロックラインの画素データ群をデコード部401がバッファメモリ402に書き込んでいないのに、垂直フィルタ部403が前のフレーム(又はフィールド)のマクロブロックラインの画素データ群を対象にフィルタ処理を行うことを防止することである。もう1つは、垂直フィルタ部403が垂直フィルタ処理の対象だが未処理のマクロブロックラインに対して、デコード部401が次のフレームの画素データ群を上書きしてしまうことを防止することである。
【0093】
図25は、制御部406における制御内容を示す説明図である。
同図の横軸は時間であり、制御部406、VSYNC(垂直同期信号)、デコード部401、垂直フィルタ部403、映像出力部405の各動作を記してある。
同図のように デコード部401は64ラインのデコードを終える毎にその旨を制御部406に通知し、垂直フィルタ部403は64ラインのフィルタしょりを終える毎にその旨を制御部406に通知する。制御部406は、これらの通知を下に、デコードが完了したライン番号Ndと、フィルタ処理が完了したライン番号Nfとを保持及び更新し、Nd(現フレーム)>Nf(現フレーム)、Nd(次のフレーム)<Nf(現フレーム)を満たすよう、デコード部401、垂直フィルタ部403を制御する。具体的には、制御部406は、NdとNfが接近した場合(その差がしきい値以下になった場合)にはデコード部401、垂直フィルタ部403の一方を一時的に停止させる。なお、Nd、Nfはマクロブロックラインの番号であってもよい。
【0094】
また、NdとNfが接近した場合には、制御部406の制御によって、デコード部401、垂直フィルタ部403の一方は制御部406により一時的に停止されるが、NdとNfが接近したか否かの判定及びデコード部401又は垂直フィルタ部403を一時的に停止させる制御は、制御部406以外が担当するように構成してもよい。
【0095】
たとえば、垂直フィルタ部403がデコード部401に上記フィルタ状態の通知を行うようにし、デコード部401は、フィルタ状態の通知と内部のデコード状態とに従って、NdとNfとが接近したか否かを判定し、判定結果に応じてデコード動作を一時的に停止し又は垂直フィルタ部403を一時的に停止させる構成としてもよい。
【0096】
あるいは、逆に、デコード部401が垂直フィルタ部403に上記デコード状態の通知を行うようにし、垂直フィルタ部403は、デコード状態の通知と内部のフィルタ状態とに従って、NdとNfとが接近したか否かを判定し、判定結果に応じてフィルタ処理を一時的に停止し又はデコード部401を一時的に停止させる構成としてもよい。
<3.2.1 1/2縮小>
図26は図24において1/2縮小処理を行う場合の各部の供給データ量を示す図である。
【0097】
グラフ901の横軸はバッファメモリ402上のフレームデータ量を示し、縦軸は時間を示している。グラフ902の横軸はバッファメモリ404上のフレームデータ量を示し、縦軸は時間を示している。グラフ903は画像出力部405の状態を時系列上に並べたものであり、時間軸はグラフ901、902の縦軸と合っている。
【0098】
グラフ上の実線904はデコーダ部401からバッファメモリ402へのフレームデータの供給状態を示している。グラフ上の破線905はバッファメモリ402から垂直フィルタ部403へのフレームデータの供給状態を示している。グラフ上の破線906は垂直フィルタ部403からバッファメモリ404への1stフィールド縮小画像データの供給状態を示している。グラフ上の破線907は垂直フィルタ部403からバッファメモリ404への2ndフィールド縮小画像データの供給状態を示している。グラフ上の実線908はバッファメモリ404から画像出力部405への1stフィールド縮小画像データの供給状態を示している。グラフ上の実線909はバッファメモリ404から画像出力部405への2ndフィールド縮小画像データの供給状態を示している。
【0099】
グラフ901で示すように、デコーダ部401からバッファメモリ402へのnフレームのフレームデータの供給が開始された直後に、バッファメモリ402から垂直フィルタ部403へのnフレームのフレームデータの供給を開始し、デコーダ部401からバッファメモリ402へのnフレームのフレームデータの供給が終了する直後にバッファメモリ402から垂直フィルタ部403へのnフレームのフレームデータの供給が終了するように制御を行う。グラフ902で示すように、垂直フィルタ部403からバッファメモリ404へのnフレームのフレームデータの供給はn-1フレーム表示中に完了するように制御を行う。
【0100】
このように装置を制御する事により、デコーダ部401からバッファメモリ402間は、2Vの期間に1フレームのフレームデータ転送能力、バッファメモリ402から垂直フィルタ部403間は、2Vの期間に1フレームのフレームデータ転送能力、デコーダ部401は2Vの期間に1フレームのフレームデータを生成する演算能力、垂直フィルタ部403は2Vの期間に1フレームのフレームデータをフィルタ処理する演算能力、垂直フィルタ部403からバッファメモリ404間は、2Vの期間に1/2フレームのフレームデータ転送能力、バッファメモリ404から画像出力部405間は、1Vの期間に1/4フレームのフレームデータ転送能力、数ライン分のフレームデータを保持できるバッファメモリ402、フレームデータ1フレームを保持できるバッファメモリ404がそれぞれ必要となる。
<3.2.2 1/4縮小>
図27は図24において1/4縮小を行った場合の各部のデータ供給量を示す図である。
【0101】
グラフ1001の横軸はバッファメモリ402上のフレームデータ量を示し、縦軸は時間を示している。グラフ1002の横軸はバッファメモリ404上のフレームデータ量を示し、縦軸は時間を示している。グラフ1003は画像出力部405の状態を時系列上に並べたものであり、時間軸はグラフ1001、1002の縦軸と合っている。
【0102】
グラフ上の実線1004はデコーダ部401からバッファメモリ402へのフレームデータの供給状態を示している。グラフ上の破線1005はバッファメモリ402から垂直フィルタ部403へのフレームデータの供給状態を示している。グラフ上の破線1006は垂直フィルタ部403からバッファメモリ404への1stフィールド縮小画像データの供給状態を示している。グラフ上の破線1007は垂直フィルタ部403からバッファメモリ404への2ndフィールド縮小画像データの供給状態を示している。グラフ上の実線1008はバッファメモリ404から画像出力部405への1stフィールド縮小画像データの供給状態を示している。グラフ上の実線1009はバッファメモリ404から画像出力部405への2ndフィールド縮小画像データの供給状態を示している。
【0103】
このように装置を制御する事により、デコーダ部401からバッファメモリ402間は、2Vの期間に1フレームのフレームデータ転送能力で足り、バッファメモリ402から垂直フィルタ部403間は、2Vの期間に1フレームのフレームデータ転送能力で足り、デコーダ部401は2Vの期間に1フレームのフレームデータを生成する演算能力で足り、垂直フィルタ部403は2Vの期間に1フレームのフレームデータをフィルタ処理する演算能力で足り、垂直フィルタ部403からバッファメモリ404間は、2Vの期間に1/4フレームのフレームデータ転送能力で足り、バッファメモリ404から画像出力部405間は、1Vの期間に1/8フレームのフレームデータ転送能力で足りる。バッファメモリ402は、数ライン分のフレームデータを保持でき、バッファメモリ404はフレームデータ1/2フレームを保持できれば足りる。
【0104】
これらの各必要性能は最短でも1Vの期間での平均の能力であり、縮小率が短い期間で大きなピーク性能を要求される事がない。
また、最も処理性能を必要とされるが縮小なしの場合であり、その場合に要求されるのがデコーダ部401からバッファメモリ402間は、2Vの期間に1フレームのフレームデータ転送能力、バッファメモリ402から垂直フィルタ部403間は、2Vの期間に1フレームのフレームデータ転送能力、デコーダ部401は2Vの期間に1フレームのフレームデータを生成する演算能力、垂直フィルタ部403は2Vの期間に1フレームのフレームデータをフィルタ処理する演算能力、垂直フィルタ部403からバッファメモリ404間は、2Vの期間に1フレームのフレームデータ転送能力、バッファメモリ404から画像出力部405間は、1Vの期間に1/2フレームのフレームデータ転送能力、数ライン分のフレームデータを保持できるバッファメモリ402、フレームデータ2フレームを保持できるバッファメモリ404であり、この能力であらゆる垂直縮小処理を行う事ができる。これらにより回路規模を削減し、動作クロックを引き下げる事が出来る。
<4.変形例>
図28、29は、画素並列処理部の左半分、右半分の第1の変形例を示す図である。これらの図は、図3、4に対して同じ構成要素には同じ符号を付しているので説明を省略し、異なる点を中心に説明する。
【0105】
図28、29は、図3、4の画素処理部1〜16の代わりに画素処理部1a〜16aを、画素転送部17、18の代わりに画素転送部17a、18bを備える。画素処理部1a〜16aはいずれも同じ構成なので、画素処理部1aを代表して説明する。
画素処理部1aは、画素処理部1における選択部A104、選択部B105の代わりに選択部A104a、選択部B105aを備える。
【0106】
選択部A104aは、選択部A104と比べると2入力から3入力になっている点が異なる。つまり、選択部A104aは、2つ隣の画素転送部(又は画素処理部)の遅延器(遅延器B)から画素データ入力が増えている。
選択部B105aは、同様に2つ隣の画素転送部(又は画素処理部)の遅延器(遅延器B)の画素データ入力が増えている。
【0107】
また、画素転送部17aは、選択部B1703〜選択部G1708の代わりに選択部B1703a〜選択部G1708aを備える。選択部B1703a〜選択部G1708aは、それぞれ2入力ではなく3入力になっている。増えている入力は、2つ左の遅延器からの画素データ入力である。
また、画素転送部18aは、選択部B1803〜選択部G1808の代わりに選択部B1803a〜選択部G1808aを備える。選択部B1803a〜選択部G1808aは、それぞれ2入力ではなく3入力になっている。増えている入力は、2つ右の遅延器からの画素データ入力である。
【0108】
この構成によれば、処理対象の画素と、その画素から左右に2つ隣の画素を順に用いたフィルタ処理を行うことができる。
例えば、画素処理部1aでは次式などを演算することができる。
a0・X9+a1(X11+X7)+a2(X13+X5)+a3(X15+X3)
図30、31は、画素並列処理部の左半分、右半分の第2の変形例を示す図である。
【0109】
図30、31は、図3、4の画素処理部1と画素処理部16との代わりに画素処理部1bと画素処理部16bとを備える。
画素処理部1bは、画素処理部1における選択部B105の代わりに選択部b105bを備える。選択部B105bは、遅延器B107からのフィードバック入力を有している点で選択部B105と異なっている。
【0110】
画素処理部16bは、画素処理部16における選択部A1604の代わりに選択部A1604bを備える。選択部A1604bは、遅延器A1606からのフィードバック入力を有している点で選択部A1605と異なっている。
この構成によれば、画素処理部1bは例えば次の演算を行う。
a3*X6+a2*X7+a1*X8+a0*X9+a1*X10+a2*X11+a3*X12
このとき画素処理部2の出力は、次のようになる。
【0111】
a3*X20+a2*X21+a1*X22+a0*X23+a1*X24+a2*X24+a3*X24
このとき、画素処理部16bの出力は次のようになる。
a3*X21+a2*X22+a1*X23+a0*X24+a1*X24+a2*X24+a3*X24
このように、図30、31では、左端の画素処理部1bにデータ列の左端の画素データが転送されてきた場合に、選択部B105bは画素処理部1b内の遅延器Bからのフィードバック入力を選択する。右端の画素処理部16bにデータ列の右端の画素データが転送されてきた場合、選択部A1604bは、遅延器A1606からのフィードバック入力を選択する。
【0112】
図32、33は、画素並列処理部の左半分、右半分の第2の変形例を示す図である。
図32、33は、図3、4の画素処理部1〜16の代わりに画素処理部1c〜16c、画素転送部17、18の代わりに画素転送部17c、18cを備える。画素処理部1c〜16cはいずれも同じ構成なので、画素処理部1aを代表して説明する。
【0113】
画素処理部1cは、画素処理部1における選択部A104、選択部B105の代わりに選択部A104c、選択部B105cを備える。
選択部A104cは、選択部A104と比べると2入力から3入力になっている点が異なる。つまり、選択部A104cは、2つ隣の画素転送部(又は画素処理部)の遅延器(遅延器B)の画素データ入力が増えている。
【0114】
選択部B105cは、2つ隣の画素転送部(又は画素処理部)の遅延器(遅延器B)の画素データ入力と、遅延器B107からのフィードバック入力とが増えている。
画素転送部17c、18cは、図28、図29に示した画素転送部17a、18aと同様に2入力ではなく3入力になっている。
【0115】
この構成によれば、画素処理部1cは例えば次の演算を行う。
a3*X9+a2*X9+a1*X9+a0*X9+a1*X11+a2*X13+a3*X15
このとき画素処理部2cの出力は、次のようになる。
a3*X10+a2*X10+a1*X10+a0*X10+a1*X12+a2*X14+a3*X16
このとき画素処理部15cの出力は、次のようになる。
a3*X17+a2*X19+a1*X21+a0*X23+a1*X23+a2*X23+a3*X23
このとき画素処理部16cの出力は、次のようになる。
a3*X18+a2*X20+a1*X22+a0*X24+a1*X24+a2*X24+a3*X24
図34は、POUA207の変形例を示す図である。
【0116】
同図のPOUA207は、図2と比べてアップサンプリング回路22aとダウンサンプリング回路23aとが追加されている。図2と同じ点は説明を省略し、異なる点を中心に説明する。
アップサンプリング回路22aは、入力バッファ群22から入力される画素データ群を垂直方向に拡大する。例えば、入力バッファ群22から入力される画素データ群を垂直方向に2倍にするよう画素データを補間するため、入力バッファ群22からの画素データ群の入力1回に対して、同じ画素データ群を2回画素並列処理部21に出力する。
【0117】
ダウンサンプリング回路23aは、画素並列処理部21から入力される画素データ群を垂直方向に縮小する。例えば、画素並列処理部21から入力される画素データ群を垂直方向に1/2倍にするよう画素データを間引く。つまり、画素並列処理部21からの画素データ群の入力2回に対して、1回分を破棄し1回分を出力する。
【0118】
この構成によれば、画素並列処理部21の入力側で垂直方向に2倍、出力側で垂直方向に1/2倍するので、外部メモリ220における1フレームあたりのデータ量を垂直方向に1/2にすることができ、その結果、POUC209によるPOUA207へのデータ転送量を1/2にすることができる。これにより、デュアルポートメモリ100の内部ポートへのアクセスが集中する場合にバスネックを解消することができる。
【0119】
また、本発明の画素演算装置は画像のをリサイズ等を行うのフィルタリング処理を複数画素に対して並列に行うので、動画の圧縮処理/伸張処理、リサイズ等を扱うメディアプロセッサなどのデジタル映像機器に利用される。
【0120】
【発明の効果】
本発明の画素演算装置は、フィルタ処理を行う画素演算装置であって、N個の画素処理手段と、N個の画素データ及びフィルタ係数を供給する供給手段と、N個の画素処理手段を並列に動作させる制御手段とを備える。
各画素処理手段は、供給手段に供給された画素データとフィルタ係数とを用いて演算した後、各画素処理手段に対して隣接する画素処理手段から画素データを取得し、取得した画素データを用いて演算して演算結果を累積する。前記制御手段は、隣接する画素処理手段からの画素データの取得と、取得した画素データを用いた演算及び累積とをタップ数に応じた回数繰り返すようN個の画素処理手段を制御する。
【0121】
ここで、前記N個の画素処理手段は、N個の画素データを右シフトする第1シフタと、N個の画素データを左シフトする第2シフタを形成する。各画素処理手段は、隣接する2つの画素処理手段からシフトアウトされる2つの画素データを用いて演算する。
この構成によれば、タップ数を可変にすることができ、周波数をあげずに処理を高速化するフィルタリング処理を行うことができるという効果がある。
【0122】
また、本発明の画素演算装置は、画素データとして差分画像の画素データと参照フレームの画素データとを供給手段から供給する。
この構成によれば、フィルタリング処理だけでなくMC(動き補償)処理にも利用可能で、フィルタ装置とMC回路とを独立に設ける必要がないので、回路規模の小型化を図ることができるという効果がある。
【図面の簡単な説明】
【図1】従来技術におけるFIRフィルタ処理を行う回路例を示すブロック図である。
【図2】画素演算ユニットを備えるメディアプロセッサの構成を示すブロック図である。
【図3】画素演算ユニット(POUA、POUB)の構成を示すブロック図である。
【図4】画素並列処理部の左半分の構成を示すブロック図である。
【図5】画素並列処理部の右半分の構成を示すブロック図である。
【図6】(a)は、入力バッファ群22の詳細な構成を示すブロック図である。
(b)は、入力バッファ群22内の選択部の詳細な構成を示すブロック図である。
【図7】出力バッファ群23の構成を示すブロック図である。
【図8】画素演算ユニットにてフィルタ処理を行う場合の画素データの初期入力値を示す図である。
【図9】画素処理部1に対する画素データの初期入力値を示す説明図である。
【図10】画素処理部1でのフィルタ処理における演算過程を示す図である。
【図11】画素処理部1でのフィルタ処理の演算内容を示す説明図である。
【図12】画素演算ユニットにてMC(動き補償)処理(Pピクチャ)を行う場合の入出力画素データを示す図である。
【図13】MC処理における復号対象フレームと参照フレームとを示す説明図である。
【図14】画素演算ユニットにてMC処理(Bピクチャ)を行う場合の入出力画素データを示す図である。
【図15】画素演算ユニットにてOSD(オンスクリーンディスプレイ)処理を行う場合の入出力画素データを示す図である。
【図16】画素演算ユニットにおけるOSD(オンスクリーンディスプレイ)処理の説明図である。
【図17】画素演算ユニットにてME(動き予測)処理を行う場合の入出力画素データを示す図である。
【図18】画素演算ユニットにてME(動き予測)の説明図である。
【図19】メディアプロセッサにおいて垂直フィルタ処理を行う場合のデータの流れを示した模式的なブロック図である。
【図20】垂直1/2縮小を行う場合の説明図である。
【図21】従来技術において垂直1/2縮小を行う場合の説明図である。
【図22】垂直1/4縮小を行う場合の説明図である。
【図23】従来技術において垂直1/4縮小を行う場合の説明図である。
【図24】メディアプロセッサにおいて垂直フィルタ処理を行う場合のデータの流れを示した模式的な別のブロック図である。
【図25】デコード処理と垂直フィルタ処理とのタイミングを示す説明図である。
【図26】垂直1/2縮小を行う場合の説明図である。
【図27】垂直1/4縮小を行う場合の説明図である。
【図28】画素並列処理部の左半分の第1の変形例を示す図である。
【図29】画素並列処理部の右半分の第1の変形例を示す図である。
【図30】画素並列処理部の左半分の第2の変形例を示す図である。
【図31】画素並列処理部の右半分の第2の変形例を示す図である。
【図32】画素並列処理部の左半分の第3の変形例を示す図である。
【図33】画素並列処理部の右半分の第3の変形例を示す図である。
【図34】画素処理ユニットの変形例を示す図である。
【符号の説明】
1 画素処理部
1〜16 画素処理部
17 画素転送部
18 画素転送部
21 画素並列処理部
22 入力バッファ群
22a アップサンプリング回路
23 出力バッファ群
23a ダウンサンプリング回路
23a〜23h ラッチ
23a〜23p ラッチ
23i〜23p ラッチ
24 命令メモリ
24a〜24h セレクタ
24a〜24p セレクタ
24i〜24p セレクタ
25 命令デコーダ
26 指示回路
27 DDA回路
100 デュアルポートメモリ
104 選択部A
104a 選択部A
104c 選択部A
105 選択部B
105a 選択部B
105b 選択部B
105c 選択部B
107 遅延器B
109 遅延器D
120 加算器A
200 メディアプロセッサ
201 ストリームユニット
201 入力ポートA
202 I/Oバッファ
202 入力ポートB
203 セットアッププロセッサ
203 入力ポートC
204 ビットストリームFIFO
205 可変長符号復号部
206 TE
207 POUA
208 POUB
209 POUC
210 オーディオユニット
211 IOP
212 ビデオバッファメモリ
213 ビデオユニット
214 ホストユニット
215 RE
216 フィルタ部
217 セットアップメモリ
218 専用LSI
220 外部メモリ
401 デコーダ部
402 バッファメモリ
403 垂直フィルタ部
404 バッファメモリ
405 映像出力部
406 制御部
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a pixel arithmetic device including a filtering circuit for resizing an image.
[0002]
[Prior art]
In recent years, technological progress of digital video equipment has been remarkable, and so-called media processors that handle video compression / expansion processing, resizing, and the like have been put into practical use.
For image resizing, an FIR (Finite Impulse Response) filter is often used.
[0003]
FIG. 1 is a block diagram showing an example of a circuit that performs FIR filter processing in the prior art. This figure shows an FIR filter with 7 taps and symmetrical coefficients.
In the figure, data input in time series from the data input terminal 1001 is sequentially transferred to the delay units 1002, 1003, 1004, 1005, 1006, and 1007 in this order. When the filter coefficients are symmetric, that is, when the coefficients corresponding to the input of the data input terminal and the output of each delay unit (called a tap) are symmetric with respect to the center tap (the output of the delay device 1004), Instead of multiplying the tap data by the filter coefficient, the tap data having the same coefficient is added to each other and then multiplied by the coefficient.
[0004]
For example, the input data of the data input unit 1001 and the output data of the delay unit 1007 are added by the adder 1008, and the multiplier 1008 multiplies the addition result by the coefficient h0. The output of the delay unit 1002 and the output of the delay unit 1006 are added by the adder 1009, and the multiplier 1009 multiplies the addition result by the coefficient h1.
Output data of the multipliers 1011 to 1014 are added by an adder 1015. The output data of the adder 1015 is output from the data output terminal 1016 in time series as a filter processing result. The coefficients h0 to h3 are determined according to the image reduction ratio. For example, if the reduction ratio is 1/2, a reduced image can be obtained by thinning out the time series output data to 1/2.
[0005]
Also, the filter coefficients are selected symmetrically because the visual phase of the image is preferable because a linear phase (the phase characteristic becomes a straight line with respect to the frequency) is obtained.
[0006]
[Problems to be solved by the invention]
However, in the above conventional method, when filtering processing is performed on image data, pixel data constituting an image is sequentially input from the end due to the circuit configuration, so that one pixel data can be input in one clock. Therefore, it is necessary to increase the operating frequency in order to increase the processing speed. There is a problem that operation at a high operating frequency increases cost and power consumption.
[0007]
In addition, since the circuit differs depending on the number of taps in the conventional method, there is no degree of freedom. If a circuit is provided for each number of taps, enormous costs are required.
A first object of the present invention is to provide a pixel calculation device that can perform a filtering process that can change the number of taps and increase the processing speed without increasing the frequency.
[0008]
A second object of the present invention is to provide a pixel arithmetic device that can be used not only for filtering processing but also for MC (motion compensation) processing, and which has a reduced circuit scale.
A third object is to provide a pixel arithmetic device that can be used not only for filtering processing but also for ME (motion prediction) processing, and which has a reduced circuit scale.
[0009]
A fourth object is to provide a pixel arithmetic device that is not only used for filtering processing but also used for OSD (On Screen Display) processing in digital video equipment and has a reduced circuit scale.
[0010]
[Means for Solving the Problems]
A pixel arithmetic device that achieves the first object is a pixel arithmetic device that performs filter processing, and includes N pixel processing means, N pixel data and a supply means for supplying filter coefficients, and N pieces of pixel arithmetic means. Control means for operating the pixel processing means in parallel.
Each pixel processing means calculates using the pixel data supplied to the supplying means and the filter coefficient, then acquires pixel data from the pixel processing means adjacent to each pixel processing means, and uses the acquired pixel data And accumulate the calculation results. The control means controls the N pixel processing means so as to repeat the acquisition of the pixel data from the adjacent pixel processing means and the calculation and accumulation using the acquired pixel data for the number of taps.
[0011]
Here, the N pixel processing units form a first shifter that shifts N pixel data to the right and a second shifter that shifts N pixel data to the left. Each pixel processing means performs an operation using two pixel data shifted out from two adjacent pixel processing means.
The pixel calculation device that achieves the second object supplies pixel data of a difference image and pixel data of a reference frame as pixel data from a supply unit.
[0012]
DETAILED DESCRIPTION OF THE INVENTION
The pixel arithmetic unit of the present invention mainly includes (a) filter processing used for enlargement / reduction of an image, (b) motion compensation (hereinafter referred to as ME) processing, (c) OSD (On Screen Display) processing, ( d) It is configured to selectively execute a motion estimation (hereinafter referred to as ME) process. (A) Regarding the filter processing, the pixel operation unit makes the number of taps variable without fixing, and processes a plurality of pixels (for example, 16 pixels) that are continuous in the horizontal direction or the vertical direction in parallel. Further, the filtering process in the vertical direction is performed in synchronization with the decompression process of the compressed moving image data.
[0013]
Hereinafter, the pixel operation unit in the embodiment of the present invention will be described in the following order.
1 Media processor configuration
1.1 Configuration of pixel operation unit
1.2 Configuration of pixel parallel processing unit
2.1 Filter processing
2.2 MC (motion compensation) processing
2.3 OSD (On Screen Display) processing
2.4 ME (motion prediction) processing
3.1 Vertical filter processing (1)
3.1.1 1/2 reduction
3.1.2 1/4 reduction
3.2 Vertical filter processing (part 2)
3.2.1 1/2 reduction
3.2.2 1/4 reduction
4 Modifications
<1 Media processor configuration>
A case will be described below where the pixel arithmetic unit in the present embodiment is incorporated in a media processor that performs media processing (compression audio video data decompression processing, audio video data compression processing, etc.). The media processor is mounted on, for example, a set top box that receives digital TV broadcasts, a television receiver, a DVD recording / playback apparatus, and the like.
[0014]
FIG. 2 is a block diagram illustrating a configuration of a media processor including a pixel operation unit. In the figure, a media processor 200 includes a dual port memory 100, a stream unit 201, an input / output buffer (hereinafter abbreviated as I / O buffer) 202, a setup processor 203, a bit stream FIFO 204, a variable length code decoding unit (VLD) 205, a variable. A long code decoding unit 205, a transfer engine (hereinafter referred to as TE) 206, a pixel operation unit A (hereinafter referred to as POUA) 207, a pixel operation unit B (hereinafter referred to as POUB) 208, a POUC 209, an audio unit 210, an IOP 211, an input / output processor (hereinafter referred to as “input processor”). IOP) 211, video buffer memory 212, video unit 213, host unit 214, RE 215, and filter unit 216.
[0015]
The dual port memory 100 includes an input / output port (hereinafter referred to as an external port) for the external memory 220, an input / output (hereinafter referred to as an internal port) for the media processor 200, and a cache memory. Among them, an access request from a component (hereinafter referred to as a master device) that reads / writes data to / from the external memory 220 is received from the internal port, and the external memory 220 is accessed according to the received access request. At that time, the dual port memory 100 caches a part of the data of the external memory 220 in the internal cache memory. The external memory 220 is a memory such as SDRAM or RDRAM, and temporarily stores compressed moving image data, compressed audio data, decoded audio data, decoded moving image data, and the like.
[0016]
The stream unit 201 inputs stream data (a so-called MPEG stream) from the outside, separates the input stream data into a video elementary stream and an audio elementary stream, and writes them into the I / O buffer 202.
The I / O buffer 202 is a buffer memory that temporarily holds a video elementary stream, an audio elementary stream, and audio data (expanded audio data). The video elementary stream and the audio elementary stream are respectively stored in the I / O buffer 202 from the stream unit 201 and further stored in the external memory 220 via the dual port memory 100 under the control of the IOP 211. Audio data is stored in the I / O buffer 202 from the external memory 220 via the dual port memory 100 under the control of the IOP 211.
[0017]
The setup processor 203 performs decoding (decompression) of the audio elementary stream and header analysis of the macro block of the video elementary stream. The audio elementary stream and the video elementary stream are transferred from the external memory 220 to the bit stream FIFO 204 via the dual port memory 100 under the control of the IOP 211. The setup processor 203 reads and decodes the audio elementary stream from the bit stream FIFO 204 and stores the decoded audio data in the setup memory 217. Audio data in the setup memory 217 is transferred to the external memory 220 via the dual port memory 100 by the IOP 211. Also, the setup processor 203 reads the video elementary stream from the bit stream FIFO 204, analyzes the macroblock header, and notifies the VLD 205 of the analysis result.
[0018]
The bit stream FIFO 204 is a FIFO memory for supplying a video elementary stream to the variable length code decoding unit 205 and an audio elementary stream to the setup processor 203. The video elementary stream and the audio elementary stream are transferred from the external memory 220 to the bit stream FIFO 204 via the dual port memory 100 under the control of the IOP 211.
[0019]
The VLD 205 decodes a variable length code included in the video elementary stream supplied from the bit stream FIFO 204. This decoding result is a DCT coefficient group in units of macroblocks.
The TE 206 performs IQ (inverse quantization) processing and IDCT (inverse DCT) processing for each macroblock on the decoding result of the VLD 205. These processing results are macroblocks. One macro block is composed of four luminance blocks (Y1 to Y4) and two color difference blocks (Cb, Cr). One block is 8 × 8 pixels. However, for a P picture and a B picture, one block is output from the TE 206 as 8 × 8 difference values. The TE 206 stores the decoding result in the external memory 220 via the dual port memory 100.
[0020]
The POUA 207 selectively executes mainly (a) filter processing, (b) MC processing, (c) OSD processing, (d) motion estimation processing, and the like.
In the filtering process (a), the POUA 207 filters 16 pixel data included in the video data (frame data) stored in the external memory 220 in parallel, and thins out or interpolates the 16 pixels after filtering. To reduce or enlarge. The data after the reduced word is stored in the external memory 220 via the dual port memory 100 under the control of the POUC 209.
[0021]
In the MC processing of (b), the POUA 207 uses the IQ and IDCT processing results (that is, the difference value of the pixel data) for the P picture and B picture stored in the external memory 220 by the TE 206 and the pixel data in the reference frame. Add in 16 parallels. The 16 sets of difference values and pixel data are input to the POUA 207 by the POUC 209 in accordance with the motion vector detected by the macroblock header analysis in the setup processor 203.
[0022]
(C) In OSD processing, the POUA 207 inputs an OSD image (still image) stored in the external memory 220 or the like via the dual port memory 100 and overwrites the display frame data in the external memory 220. Here, the OSD image means a menu image displayed according to a user's remote control operation, a time display, a channel number display, or the like.
[0023]
The ME process of (d) is a search for a highly correlated rectangular area in a reference frame for a macroblock to be encoded in uncompressed frame data, and a correlation is detected from the macroblock to be encoded. This is a process for obtaining a motion vector indicating the highest rectangular area. The POUA 207 calculates 16 differences in parallel between the pixel of the macroblock to be encoded and the pixel of the rectangular area in the search area.
[0024]
The POUB 208 has the same configuration as the POUA 207, and dynamically shares the processes (a) to (d).
The POUC 209 controls the supply of pixel data groups to the POUA 207 and the POUB 208 and the transfer of processing results to the external memory 220.
The audio unit 210 outputs audio data stored in the I / O buffer 202.
[0025]
The IOP 211 controls data input / output (data transfer) in the media processor 200. There are the following types of data transfer. The first is to transfer the stream data stored in the I / O buffer 202 to the stream buffer area in the external memory 220 via the dual port memory 100. Secondly, the video elementary stream and the audio elementary stream stored in the external memory 220 are transferred to the bit stream FIFO 204 via the dual port memory 100. Thirdly, the audio data stored in the external memory 220 is transferred to the I / O buffer 202 via the dual port memory 100.
[0026]
The video unit 213 reads pixel data for a few lines from the video data (image frame) in the external memory 220, stores it in the video buffer memory 212, and converts the pixel data for the lines 2-3 into a video signal. Then, the data is output to a display device such as a television receiver connected to the outside.
A host unit (HOST) 214 receives an instruction from an external host microcomputer, and controls start / end of MPEG decoding, MPEG encoding, OSD processing, reduction / enlargement processing, and the like according to the instruction.
[0027]
A rendering engine (RE) 215 is a master device and performs rendering processing in computer graphics. Data input / output is performed when the dedicated LSI 218 is connected to the outside.
The filter 216 performs still image data enlargement / reduction processing. Data input / output is performed when the dedicated LSI 218 is connected to the outside.
[0028]
In the above description, the case where the media processor inputs stream data from the stream unit 201 and decodes (decompresses) it has been mainly described. However, the reverse flow occurs when encoding (compressing) uncompressed video data and audio data. It becomes. At that time, POUA 207 (or POUB 208) performs ME processing, TE 206 performs DCT processing and Q (quantization) processing, and VLD 205 performs variable length coding.
<1.1 Pixel Arithmetic Unit Configuration>
FIG. 3 is a block diagram illustrating a configuration of the pixel calculation unit.
[0029]
Since the POUA 207 and the POUB 208 have the same configuration, the POUA 207 will be described here.
As shown in the figure, the POUA 207 includes a pixel parallel processing unit 21, an input buffer group 22, an output buffer group 23, an instruction memory 24, an instruction decoder 25, an instruction circuit 26, and a DDA circuit 27.
[0030]
The pixel parallel processing unit 21 includes a pixel transfer unit 17, 16 pixel processing units 1 to 16, and a pixel transfer unit 18, and targets the plurality of pixels input from the input buffer group 22 (a). Filter processing, (b) MC processing, (c) OSD processing, and (d) ME) processing are performed and output to the output buffer group 23. Each processing of (a) to (d) is completed by repeating a macroblock unit, that is, 16 pixels 16 times (for 16 lines). The activation of each process is controlled by the POUC 209. Further, the pixel transfer unit 17 holds a plurality of pixels (eight pixels in this case) on the left side (or the upper side) of the 16 pixels in the filter processing, and right shifts every clock. The pixel transfer unit 18 holds a plurality of pixels (here, 8 pixels) on the right side (or lower side) of the 16 pixels in the filter processing, and shifts out to the left for each clock.
[0031]
The input buffer group 22 holds a plurality of pixels to be processed transferred from the dual port memory 100 under the control of the POUC 209, and further holds a filter coefficient in the filter processing.
The output buffer group 23 arbitrarily changes the arrangement of the processing results (16 processing results corresponding to 16 pixels) by the pixel parallel processing unit 21 and temporarily holds them. In the filter processing, the pixel arrangement is changed and held to perform pixel thinning (during reduction) or interpolation (during enlargement).
[0032]
The instruction memory 24 stores a microprogram for filter processing (filter μP), a microprogram for MC processing (MCμP), a microprogram for OSD processing (OSDμP), and a microprogram for ME processing (MEμP). . In addition to this, the instruction memory 24 stores a microprogram for macroblock format conversion, a microprogram for converting the numerical expression of pixels, and the like. Here, the format of the macroblock is a pixel of Y, Cb, Cr blocks such as “4: 2: 0”, “4: 2: 2”, “4: 4: 4”, etc. defined in the MPEG standard. Sampling rate ratio. The numerical representation of the pixel includes a case where the pixel can be represented by 0 to 255 (general MPEG data or the like) and a case of -128 to 127 (DV camera or the like).
[0033]
The instruction decoder 25 sequentially reads and decodes the microcode in the microprogram from the instruction memory 24, and controls each part in the POUA 207 according to the decoding result.
The instruction circuit 26 receives an instruction (start address or the like) from the POUC 209 about which microprogram in the instruction memory 24 should be activated, and activates the designated microprogram.
[0034]
The DDA circuit 27 performs selection control of the filter coefficient group held in the input buffer group 22 in the filter processing.
<1.2 Configuration of Pixel Parallel Processing Unit>
4 and 5 are block diagrams showing detailed configurations of the left half and the right half of the pixel parallel processing unit.
[0035]
In FIG. 4, a pixel transfer unit 17 includes eight input ports A1701 to H1708, eight delay units A1701 to delayer H1709 that hold pixel data and delay one clock time, input port pixel data, and left delayer output. It is composed of seven selection units A1717 to G1723 for selecting one of them, and 8 pixels input in parallel from the input buffer group 22 are held in 8 delay units, and the pixels held in the 8 delay units are clock-synchronized. Functions as a right shifter that shifts to the right.
[0036]
In FIG. 5, the pixel transfer unit 18 is different from the pixel transfer unit 17 in that the shift direction is to the left.
Since the 16 pixel processing units 1 to 16 in FIGS. 4 and 5 have the same configuration, the pixel processing unit 2 will be described as a representative.
The pixel processing unit 2 includes an input port A201 to an input port C203, selection units A204 and B205, delay units A206 to D209, an adder A120, a multiplier A211, an adder B212, and an output port D213.
[0037]
The selection unit A204 selects one of the pixel data input from the input port A201 and the pixel data output from the pixel transfer unit 17 on the left side.
The selection unit A204 and the delay unit A206 also function to shift pixel data input from the right adjacent pixel processing unit 3 to the left adjacent pixel processing unit 1.
The selection unit B205 selects one of the pixel data input from the input port B202 and the pixel data shifted out from the right adjacent external memory 220.
[0038]
The selection unit B205 and the delay unit B207 also perform a function of shifting and outputting the pixel data input from the left adjacent pixel processing unit 1 to the right adjacent pixel processing unit 3.
The delay unit A206 and the delay unit B207 hold the selected pixel data in the selection unit A204 and the selection unit B205, respectively.
The delay device B207 holds the pixel data from the input port C203.
The adder A120 adds the pixel data output from the delay device A206 and the delay device B207.
[0039]
Multiplier A211 multiplies the addition result of adder A120 and the pixel data from delayer C208. The multiplier A211 is used for multiplication of pixel data and a filter coefficient in the filter processing.
The adder B212 adds the multiplication result of the multiplier A211 to the data of the delay unit D209.
[0040]
The delay unit D109 accumulates the addition result of the adder B212.
The pixel processing unit 2 executes the above (a) filter processing, (b) MC processing, (c) OSD processing, and (d) ME processing by selectively operating these components. The operation of selectively combining these components is performed by microprogram control by the instruction memory 24 and the instruction decoder 25.
[0041]
FIG. 6A is a block diagram showing a detailed configuration of the input buffer group 22.
As shown in the figure, the input buffer group 22 includes eight latches 221 that supply pixel data to the pixel transfer unit 17, 16 latch units 222 that supply pixel data to the pixel processing units 1 to 16, and pixel transfer. 8 latches 223 for supplying pixel data to the unit 18. In these, pixel data groups are transferred from the external memory 220 via the dual port memory 100 under the control of the POUC 209.
[0042]
Each latch unit 222 includes two latches that supply pixel data to the input ports A and B of the pixel processing unit, and a selection unit 224 that supplies pixel data or a filter coefficient to the input port C of the pixel processing unit.
FIG. 6B is a block diagram illustrating a detailed configuration of the selection unit 224.
As shown in the figure, the selection unit 224 includes eight latches 224a to 224h and a selector 224i that selects any one of data from the eight latches.
[0043]
The latches 224a to 224h hold the filter coefficients a0 to a7 (or a0 / 2, a1 to a7) in the filtering process. These filter coefficients are transferred from the external memory 220 to the latches 224a to 224h by the POUC 209 via the dual port memory 100.
The selector 224 i is sequentially selected from the latches 224 a to 224 h in synchronization with the clock under the control of the DDA circuit 27. In this way, the supply of the filter coefficient to the pixel processing unit is not directly controlled by the microcode, but is controlled by the hardware by the DDA circuit 27, so that the speed is increased.
[0044]
FIG. 7 is a block diagram showing the configuration of the output buffer group 23.
As shown in the figure, the output buffer group 23 includes 16 selectors 24a to 24p and 16 latches 23a to 23p.
Each of the selectors 24a to 24p receives 16 processing results of the pixel processing units 1 to 16, and selects one of them. This selection control is performed by the instruction decoder 25.
[0045]
The latches 23a to 23p hold the selection results of the selectors 24a to 24p, respectively.
For example, when the filter processing result is reduced to ½, the pixel processing units 1, 3, 5,... 15 out of the 16 processing results of the pixel processing units 1 to 16 for 16 pixels. Are selected by the eight selectors 24a to 24h and stored in the latches 23a to 23h. Further, out of the 16 processing results of the pixel processing units 1 to 16 for the next 16 pixels, the pixel processing unit The processing results of 2, 4, 6,... 16 are selected by the eight selectors 24i to 24p and stored in the latches 23i to 23p. In this way, the pixel data is thinned out and 16 pixel data reduced by 1/2 is held in the output buffer group 23 and further transferred to the external memory 220 via the dual port memory 100 under the control of the POUC 209.
<2.1 Filter processing>
Details of the filter processing in the pixel operation unit will be described.
[0046]
The POUC 209 identifies a macroblock to be filtered, transfers 32 pixel data and filter coefficients a0 / 2, a1 to a7 to the input buffer group 22 as initial values for the POUA 207 or POUB 208, and further indicates an instruction circuit. 26 is instructed to start the filtering process together with the notification of the number of taps.
FIG. 8 is a diagram illustrating initial input values of pixel data when the pixel processing unit (POUA 207) performs filter processing. In the figure, the input port column means each input port shown in FIGS. The input pixel column means pixel data supplied from the input buffer group 22 to each input port. The output port column means the output port D (adder B output) shown in FIGS. 4 and 5, and the output pixel column means the output value.
[0047]
In the input buffer group 22 for supplying pixel data to the input port, 32 pieces of pixel data X1 to X32 continuous in the horizontal direction are transferred and held by the POUC 209 as shown in FIG. The object of the filtering process here is 16 pixel data of X9 to X24. As shown in FIG. 8, the pixel data X9 to X24 are supplied to the input ports A and B of the pixel processing units 1 to 16, and the filter coefficient a0 / 2 selected by the input buffer group 22 is supplied to the input port C as an initial value. Is done.
[0048]
Further, after the initial input value is supplied from the input buffer group 22 to the pixel parallel processing unit 21, the filtering process is performed by the number of clock inputs corresponding to the desired number of taps as the filtering process.
FIG. 10 is an explanatory diagram showing a calculation process of the pixel processing unit 1 as a representative of the 16 pixel processing units. In the figure, the contents held by the delay units A to D in the pixel processing unit 1 and the output value of the adder B are shown for each number of input clocks. FIG. 11 is a diagram illustrating an output value of the output port D (adder B output) for each clock input of the pixel processing unit 1.
In the pixel processing unit 1, delay devices A and B hold pixel data X 9 as an initial input value by the first clock input (CLK 1), the delay device D holds the filter coefficient a 0/2, and the delay device D is cleared to zero. At this time, the selection units A and B both select the input port. As a result, the adder A outputs (X9 + X9), the multiplier A outputs (X9 + X9) * a0 / 2, and the adder B outputs (X9 * a0 / 2 + 0 (that is, a0 * X9) ( (See FIG. 11).
[0049]
After the second clock input (CLK2), the selection units A and B select the shift output from the adjacent pixel processing unit or pixel transfer unit instead of the input ports A and B.
The pixel data X10 and X8 and the filter coefficients a1 and a0 * X9 are held in the delay devices A to D by the second clock input (CLK2). As a result, the adder B outputs a0 * X9 + a1 (X10 + X8) (see FIG. 11). In this way, the second time, the multiplier A multiplies the filter coefficient a1 (delay device C) and the sum of pixel data shifted out from both sides (adder A). The adder B adds the multiplication result and the accumulated value of the delay unit D.
[0050]
At the third clock input (CLK3), the pixel processing unit 1 operates in the same manner as the second clock input, thereby adding a0 * X9 + a1 (X10 + x8) + a2 (X11 + X7) from the adder B. Is output.
By performing the same operation at the fourth to ninth clock inputs (CLK4 to CLK9), the adder B outputs the output values shown in FIG.
[0051]
In this way, when the filer processing result (output data) of the pixel processing unit 1 is 9 clocks,
a0 ・ X9 + a1 (X10 + X8) + a2 (X11 + X7) + a3 (X12 + X6)
+ a4 (X13 + X5) + a5 (X14 + X4) + a6 (X15 + X3) + a7 (X16 + X2) + a8 (X17 + X1)
It becomes.
[0052]
10 and 11 show the processing steps up to CLK9, but the number of input clocks is terminated by the control of the instruction decoder 25 in accordance with the number of taps notified from the POUC 209. That is, each pixel processing unit ends the filtering process at CLK2 when the number of taps is 3, ends at CLK3 when the number of taps is 5, and ends the filtering process at CLK4 when the number of taps is 7. In other words, the filter processing with the number of taps (2n-1) ends with n clock inputs.
[0053]
The instruction decoder 25 repeats 16 pixel parallel processing for 16 lines, thereby completing the filter processing for 4 blocks. At this time, the 16 filter processing results are reduced or enlarged by being thinned or interpolated in the output buffer group 23. Every time 16 pixel groups after reduction or enlargement of the output buffer group 23 are held, they are transferred to the external memory 220 via the dual port memory 100 under the control of the POUC 209. Further, the instruction decoder 25 notifies the POUC 209 of the end when the 16th line ends. The POUC 209 instructs the POUA 207 to supply the initial input value and the filter coefficient and start the filter process in the same manner as described above for the next macroblock.
[0054]
Note that the filter processing result of the pixel processing unit 2 is represented by the following expression when 9 clocks are used.
a0 ・ X10 + a1 (X11 + X9) + a2 (X12 + X8) + a3 (X13 + X7)
+ a4 (X14 + X6) + a5 (X15 + X5) + a6 (X16 + X4) + a7 (X17 + X3) + a8 (X18 + X2)
The filter processing result of the pixel processing unit 3 is expressed by the following equation when 9 clocks are used.
a0 ・ X11 + a1 (X12 + X10) + a2 (X13 + X9) + a3 (X14 + X8)
+ a4 (X15 + X7) + a5 (X16 + X6) + a6 (X17 + X5) + a7 (X18 + X4) + a8 (X19 + X3)
The filter processing results of the pixel processing units 4 to 16 are the same except that the pixel positions are different.
[0055]
As described above, the pixel parallel processing unit 21 can perform the filter processing on the 16 input pixels in parallel, and can arbitrarily set the number of taps by controlling the number of input clocks.
In FIG. 8, the input pixels of the input ports A, B, and C of the pixel processing unit 1 are (X9, X9, a0 / 2), but (X9, 0, a0) or (0, X9, a0) It is good. The pixel processing units 2 to 16 may be the same except that the target pixels are different.
<2.2 MC (Motion Compensation) Processing>
Details of MC processing when the decoding target frame is a P picture will be described.
[0056]
The POUC 209 instructs the instruction circuit 26 to start MC processing, specifies a macro block (difference value) in the decoding target frame to be MC processed, and a rectangular area pointed to by the motion vector in the reference frame, and the POUA 207 Alternatively, 16 difference values D 1 to D 16 and 16 pixel data P 1 to P 16 in the rectangular area are set in the input buffer group 22 for the POUB 208.
[0057]
FIG. 12 is a diagram showing input / output pixel data when MC processing (P picture) is performed in the pixel calculation unit. In the figure, the input port column means the input ports of the pixel transfer unit 17, the pixel processing units 1 to 16, and the pixel transfer unit 18 shown in FIGS. 4 and 5. The input pixel column means pixel data input to the input port. Since the pixel transfer units 17 and 18 are not used in the MC process, the input pixel may be anything (don't care). The output port column means the output port D (adder B output) shown in FIGS. 4 and 5, and the output pixel column means the output value.
[0058]
FIG. 13 is an explanatory diagram of input pixels to the pixel processing units 1 to 16 in the MC processing. As shown in the figure, D1 to D16 are 16 difference values in the macroblock (MB) of the decoding target frame. P1 to P16 are 16 pieces of pixel data in the rectangular area indicated by the motion vector in the reference frame.
In the MC processing, the selection units A and B in the pixel processing units 1 to 16 always select the input ports A and B, respectively. Thereby, the pixel data from the input port A and the difference value from the input port B are input to the delay units A and B via the selection units A and B, held, and further added by the adder A. The addition result is multiplied by 1 by the multiplier, 0 is added by the adder B, and the result is output from the output port D. That is, the pixel data from the input port A and the difference value from the input port B are simply added and output from the output port D.
[0059]
Further, the 16 addition results are stored in the output buffer group 23 and written back to the decoding target frame in the external memory 220 via the dual port memory 100 by the POUC 209.
MC processing is performed by repeating the above processing in units of 16 pixels of the decoding target frame. Each pixel processing unit simply performs addition, and an addition result of 16 pixels can be obtained for each clock.
[0060]
Next, MC processing when the decoding target frame is a B picture will be described.
FIG. 14 is a diagram showing input / output pixel data when MC processing (B picture) is performed in the pixel calculation unit. In the figure, the input port column, input pixel column, output port column, and output pixel column are the same as in FIG. However, the input pixel column is different from FIG. 12 in that the first clock (CLK1) and the second clock (CLK2) are input in two steps.
[0061]
P1 to P16 and B1 to B16 are 16 pieces of pixel data in a rectangular area indicated by a motion vector in two different reference frames.
In the MC processing, the selection units A and B in the pixel processing units 1 to 16 always select the input ports A and B, respectively. In the first clock (CLK1), P1 and B1 are held in the delay units A and B from the input ports A and B via the selection units A and B, and are simultaneously held in the constant 1/2 delay unit C from the input port C. . As a result, (P1 + B1) / 2 is obtained from the multiplier A. In the second clock (CLK2), the multiplication result (P1 + B1) / 2 is held in the delay device D, and at the same time, (1,0, D1) from the input ports A, B, C are the delay devices A, B, C. Therefore, D1 from the multiplier A and (P1 + B1) / 2 from the delay unit D are added by the adder B. As a result, (P1 + B1) / 2 + D1 is output from the output port.
[0062]
Further, the 16 addition results are stored in the output buffer group 23 and written back to the decoding target frame in the external memory 220 via the dual port memory 100 by the POUC 209.
MC processing for the B picture is performed by repeating the above processing in units of 16 pixels of the decoding target frame.
<2.3 OSD (On Screen Display) Processing>
The POUC 209 instructs the instruction circuit 26 to start OSD processing, and sequentially reads 16 pixel data X1 to X16 from the OSD image held in the external memory 220 and sets them in the input buffer group 22.
[0063]
FIG. 15 is a diagram showing input / output pixel data when OSD (on-screen display) processing is performed in the pixel arithmetic unit.
In the figure, the pixel transfer units 17 and 18 are not used. Pixel data X1 to X16 are input to the input port A of the pixel processing units 1 to 16 from the input buffer group 22, 0 is input to the input port B, and 1 is input to the input port C, respectively. FIG. 16 shows a state in which 16 pixels in the OSD image are sequentially written in the input buffer group 22.
[0064]
The selection units A and B in the pixel processing units 1 to 16 always select an input port in the OSD process. For example, in the pixel processing unit 1, pixel data X1 of the input port A and “0” of the input port B are held in the delay units A and B, respectively, and further added by the adder A (X1 + 0 = X1). . The addition result is multiplied by “1” input from the input port C by the multiplier A, and “0” is added by the adder B. As a result, the pixel data X1 of the input port A is output from the adder B as it is. Similarly, the pixel data X2 to X16 of the input port A from the pixel processing unit 2 to the pixel processing unit 16 are output from the adder B as they are.
[0065]
The pixel data X1 to X16 output from the adder B are stored in the output buffer group 23, and further overwritten on the display frame data in the external memory 220 via the dual port memory 100 by the POUC 209.
As shown in FIG. 16, the above processing is repeated for the entire OSD image, whereby the OSD image in the external memory 220 is overwritten and copied to the display frame data. This is the simplest of the OSD processes, and the POUA 207 or the POUB 208 simply relays the OSD image in units of 16 pixels.
[0066]
As another form of OSD processing, (1) OSD images and display frame data may be blended. When the blend rate is 0.5, the pixel data of the OSD image is input from the input buffer group 22 to each input port A of the pixel processing unit 1 to the pixel processing unit 16, and the pixel data of display frame data is input to each input port B. What is necessary is just to supply.
When the blend ratio is α: (1−α), (OSD image pixel data, 0, α) is input from the input buffer group 22 to the input ports A, B, and C of each pixel processing unit in the first clock. In the second clock, (0, pixel data of display frame data, 1-α) may be supplied.
[0067]
Further, when the OSD image is displayed in a reduced size, the above-described filtering process may be applied to the OSD image from the input buffer group 22 and overwritten from the output buffer group 23 to the position to be reduced and displayed in the display frame data.
Furthermore, the OSD image may be reduced by filtering and then blended.
<2.4 ME (Motion Prediction) Processing>
FIG. 17 is a diagram illustrating input / output pixel data when ME (motion prediction) processing is performed in the pixel arithmetic unit. In the input pixel column of the figure, X1 to X16 are 16 pixels of the macroblock in the encoding target frame, and R1 to R16 are 16 pixels in a 16 × 16 pixel rectangular area in the reference frame. FIG. 18 is an explanatory diagram showing the relationship between these pixels. The reference frame motion vector (MV) search range in FIG. 6 is a range to be searched for motion vectors around the same position as the encoding target macroblock (for example, +16 pixels to −16 pixels in the horizontal and vertical directions). It is. In this MV search range, a 16 × 16 rectangular area is present at 16 × 16 positions for pixel-by-pixel search, and 32 × 32 for half-pel (1 / 2-pixel) search. Located in the street position. FIG. 13 shows only the upper left rectangular area in the MV search range.
[0068]
In the ME processing, the sum of differences between pixels is obtained between each rectangular area in the MV search range and the macroblock to be encoded, and the rectangular area with the smallest sum (that is, the highest correlation). The displacement of the relative position between the rectangular area) and the encoding target macroblock is determined as a motion vector. The encoding target block is compared with the rectangular region having the highest correlation.
[0069]
Under the control of the POUC 209, the pixel data X1 to X16 to be encoded and the pixel data R1 to R16 of one rectangular area are transferred to the input buffer group 22. As for the pixel data R1 to R16 in the rectangular area, one line in the rectangular area is transferred for each clock. Accordingly, R1 to R16 for 16 lines are transferred for one rectangular area.
According to FIG. 17, for example, the pixel processing unit 1 shown in FIG. 4 performs subtraction and absolute value conversion between the pixel data X1 of the input port A and the pixel data R1 of the input port B in the adder A at the first clock. And passes through the multiplier A (multiplied by 1). The adder B outputs an addition value between the multiplier output and the data held in the delay unit D. In the first clock, the adder B outputs | X1-R1 | on the first line.
[0070]
In the second clock, the first line | X1-R1 | is held in the delay unit. Therefore, the adder B is held in the second line | X1-R1 | from the multiplier A and the delay unit D. Add | X1-R1 | on the first line.
In the third clock, the first and second lines | X1-R1 | are accumulated in the delay unit, so that the adder B holds the third line | X1-R1 | from the multiplier A and the delay unit D. Then, | X1-R1 | in the first line is added.
[0071]
In the 16th clock, the adder B outputs the cumulative value (Σ | X1-R1 |) of | X1-R1 |
Accumulated values (Σ | X1-R1 |) to (Σ | X16-R16 |) are also output for the pixel processing units 2 to 16, respectively.
These 16 accumulated values are held in the output buffer group 23 at the 17th clock, taken out by the POUC 209, and the sum of the 16 accumulated values is calculated and stored in the work area in the external memory 220.
[0072]
This completes the calculation of the sum of the differences between the pixel data of one rectangular area and the encoding target macroblock.
Thereafter, the sum of differences is calculated in the same manner for other rectangular areas in the MV search range. When the sum of differences is calculated for all rectangular areas (or necessary rectangular areas) within the MV search range, the rectangular area having the smallest value is determined as the rectangular area having the highest correlation, and a motion vector is generated. The
[0073]
In the ME process, the total of 16 accumulated values from the pixel processing unit is separately performed, but the total of 16 accumulated values may be calculated in the pixel processing units 1 to 16. In this case, the 16 accumulated values for one rectangular area are stored as they are from the output buffer group 23 in the work area of the external memory 220, and the accumulated value groups for 16 or more rectangular areas are stored in this work area. In this case, each of the pixel processing units 1 to 16 may share one rectangular area and sequentially accumulate the 16 accumulated values to obtain the sum of the differences.
[0074]
In the ME process, the difference is calculated in units of pixels, but may be calculated in units of half pels. In that case, of the half line and the real line, | X1-R1 | is calculated for one line as described above for the real line, and for half lines, for example, one half of the two clocks is half-pel. The pixel value ((R1 + R1 ′) / 2) may be calculated, and the difference | X1− (R1 + R1 ′) / 2 | may be calculated in the next one clock. Alternatively, half-pel pixel values ((R1 + R1 ′ + R2 + R2 ′) / 4) may be calculated in 4 clocks out of 5 clocks, and the difference may be calculated in the next 1 clock.
<3.1 Vertical Filter Processing (Part 1)>
FIG. 19 is a schematic block diagram of the media processor showing the flow of data when performing vertical filter processing in the media processor shown in FIG.
[0075]
In the figure, a decoder unit 301 corresponds to the VLD 205, TE 206, and POUA 207 (MC processing) for decoding (decompressing) the video elementary stream in FIG. 2, and decodes (decompresses) the video elementary stream.
The frame memory 302 corresponds to the external memory 220 and holds video data (frame data) as a decoding result.
The vertical filter 303 corresponds to the POUB 208 and performs vertical reduction by vertical filter processing.
The buffer memory 304 corresponds to the external memory 220 and holds reduced video data (frame data for display).
[0076]
The image output unit 305 corresponds to the video buffer memory 212 and the video unit 213, converts display frame data into a video signal, and outputs the video signal.
The POUA 207 is responsible for MC processing and the POUB 208 is responsible for vertical filter processing. Further, it is assumed that the horizontal reduction by the horizontal filter processing is performed by one of the POUA 207 and the POUB 208 with respect to the decoded frame data of the frame memory 302.
<3.1.1 1/2 reduction>
FIG. 20 is a diagram showing temporal changes in the data supply states of the frame memory 302 and the buffer memory 304 when the 1/2 reduction process is performed in FIG.
[0077]
In FIG. 20, the vertical axes of the graphs 701 to 703 indicate time in units of the period V of the vertical synchronization signal of the field. In the figure, five periods are shown, and the time axes of the graphs 70 to 703 are the same. The horizontal axis of the graph 701 indicates the amount of data in the frame memory 302. The horizontal axis of the graph 7702 indicates the amount of data in the buffer memory 304. A graph 703 shows a frame (field) being output by the image output unit 305.
[0078]
A solid line 704 in the graph 701 indicates the amount of frame data supplied from the decoder unit 301 to the frame memory 302. A broken line 705 indicates the amount of frame data supplied from the frame memory 302 to the vertical filter unit 303.
A broken line 706 in the graph 702 indicates the supply amount of the 1st field reduced image from the vertical filter unit 303 to the buffer memory 304. An alternate long and short dash line 707 indicates the supply amount of the 2nd field reduced image from the vertical filter unit 303 to the buffer memory 304.
[0079]
A solid line 708 in the graph 702 indicates the supply state of 1st field reduced image data from the buffer memory 304 to the image output unit 305. In the case of 1/2 reduction, since the display position of the reduced image can be taken from the upper half position to the lower half position of the frame, the solid line 709 in the figure differs in timing depending on the display position. Similarly, a solid line 709 indicates a supply state of 2nd field reduced image data from the buffer memory 304 to the image output unit 305.
[0080]
As shown by the graph 701, the supply of the frame data of n frames from the decoder unit 301 to the frame memory 302 starts immediately after the supply of the 2nd field of the n-1 frame from the frame memory 302 to the vertical filter unit 303 is started. Control is performed so that the supply of frame data of n frames from the memory 302 to the vertical filter unit 303 is completed immediately before the supply from the frame memory 302 of the 1st field of n frames to the vertical filter unit 303 is completed.
[0081]
As shown by the graph 702, the supply of the frame data of the 1st field of n frames from the vertical filter unit 303 to the buffer memory 304 is the display of the frame data of the 2nd field of n frames while the 2nd field of the n-1 frame is displayed. Control is performed so that each is completed during display of the 1st field of n frames.
By controlling the apparatus in this manner, it is sufficient that the decoder unit 301 and the frame memory 302 have the ability to transfer one frame of frame data in a 2V period. Between the frame memory 302 and the vertical filter unit 303, it is sufficient to have the ability to transfer 1/2 frame data in a 1V period. It is sufficient that the decoder unit 301 has an arithmetic capability for generating one frame of frame data in a 2V period, and the vertical filter unit 303 has an arithmetic capability to filter 1/2 frame data in a 1V period. Between the vertical filter unit 303 and the buffer memory 304, it is sufficient to have the ability to transfer ¼ frame data in a 1V period. Between the buffer memory 304 and the image output unit 305, it is sufficient to have the ability to transfer 1/4 frame data in a 1V period. The frame memory 302 holds one frame of frame data, and the buffer memory 304 only needs to have a capacity for holding 1/2 frame data.
[0082]
Next, for comparison with FIG. 20, FIG. 21 shows a time change in the data supply state when the buffer memory 304 is not provided.
When the reduction process is not performed, the supply of digital image data of n frames to the frame memory 302 has started to be supplied to the vertical filter unit 303 of the 2nd field of the n-1 frame indicated by the broken line 507, as indicated by the solid line 506. It starts from the time and ends before the supply to the vertical filter unit 303 of the 1st field of the n frame indicated by the broken line 508 is completed. Therefore, one frame of digital image data is supplied at a constant rate during the 2V period shown on the graph of FIG.
[0083]
Also, the supply of digital image data from the frame memory 302 of the 1st field of n frames to the vertical filter unit 303 ends the supply of the digital image data of n frames to the frame memory 302 indicated by the solid line 511 as indicated by a broken line 508. The process is completed immediately after, and then the processing of the 2nd field is started. For this reason, digital image data is supplied from the frame memory 302 to the vertical filter unit 303 by supplying one field of digital image data at a constant rate during a period of 1V shown in the graph of FIG.
[0084]
However, when the 1/2 reduction process is performed, the timing at which the supply of n frames of digital image data to the frame memory 302 can be started differs depending on the display position of the 2nd field of the n-1 frame. Depending on the display position of the 2nd field of n−1 frame, the digital image data is supplied from the frame memory 302 to the vertical filter unit 303 somewhere between the broken lines 509 to 510, and n frames of digital data are supplied to the frame memory 302. The timing at which the supply of image data can be started is most delayed in the case of the display position indicated by the broken line 510. In this case, the 1/2 reduced image is output to the lower half of the image output unit 501. Further, the supply of n frames of digital image data to the frame memory 302 must be completed before the supply to the vertical filter unit 303 of the 1st field of the n frames indicated by the broken line 511 is completed. For this reason, it is necessary to supply one frame of digital image data at a constant speed during the 1 V period shown in the graph of FIG. 21, and twice the supply capability is required as compared with the case where no reduction is performed.
[0085]
In addition, the supply of digital image data from the frame memory 302 of the 1st field of n frames to the vertical filter unit 303 ends the supply of the digital image data of n frames to the frame memory 302 indicated by the solid line 512, as indicated by a broken line 511. The process is completed immediately after, and then the processing of the 2nd field is started. Therefore, it is necessary to supply one field of digital image data at a constant speed during the period of 1 / 2V shown in the graph of FIG. 5, and twice the supply capability is required as compared with the case where no reduction is performed. . Since the vertical filter unit 303 is also required to have performance corresponding to the supplied digital image data, it requires twice the computing power as compared with the case where no reduction is performed.
[0086]
For comparison with FIG. 20, FIG. 23 shows a time change in the data supply state when the 1/4 reduction process is performed when the buffer memory 304 is not provided.
FIG. 23 shows a graph when the 1/4 reduction processing is performed. For the same reason as described above, the supply capability of digital image data to the frame memory 302, the supply capability from the frame memory 302 to the vertical filter unit 303, and the calculation capability of the vertical filter unit are four times that when the reduction process is not performed. Necessary. Thus, when the buffer memory 304 is not provided, the required peak performance increases as the reduction ratio increases.
<3.1.2 1/4 reduction>
FIG. 22 is a diagram showing a data supply state of each unit and its change over time when 1/4 reduction is performed by the media processor shown in FIG.
[0087]
In FIG. 22, the horizontal and vertical axes of the graph are the same as those in FIG.
A solid line 804 on the graph indicates a supply state of frame data from the decoder unit 301 to the frame memory 302. A broken line 805 on the graph indicates a supply state of frame data from the frame memory 302 to the vertical filter unit 303. A broken line 806 on the graph indicates a supply state of 1st field reduced image data from the vertical filter unit 303 to the buffer memory 304. A broken line 807 on the graph indicates a supply state of 2nd field reduced image data from the vertical filter unit 303 to the buffer memory 304. A solid line 808 on the graph indicates a supply state of 1st field reduced image data from the buffer memory 304 to the image output unit 305. A solid line 809 on the graph indicates a supply state of 2nd field reduced image data from the buffer memory 304 to the image output unit 305.
[0088]
As shown in the figure, between the decoder unit 301 and the frame memory 302, it is sufficient if there is an ability to transfer one frame of frame data in a 2V period. Between the frame memory 302 and the vertical filter unit 303, it is sufficient to have the ability to transfer frame data of 1/2 frame in a 1V period. It suffices that the decoder unit 301 has a calculation capability for generating one frame of frame data in a 2V period. The vertical filter unit 303 is capable of filtering 1/2 frame data in a 1V period. Between the vertical filter unit 303 and the buffer memory 304 is 1/8 frame data transfer capability in a 1V period. Between 304 and the image output unit 305, a frame data transfer capability of 1/8 frame is sufficient for a period of 1V. A frame memory 302 that can hold one frame of frame data and a buffer memory 304 that can hold ¼ frame data are required.
[0089]
Each of these required performances is an average ability in a period of 1 V at the shortest, and even if the reduction ratio increases, a large peak performance is not required in a short period. The processing performance is most required when there is no reduction. In this case, the frame data transfer capability of 1 frame is sufficient between the decoder unit 301 and the frame memory 302 for a period of 2V. Between the frame memory 302 and the vertical filter unit 303, a frame data transfer capability of 1/2 frame is sufficient for a period of 1V. The decoder unit 301 only needs a calculation capability to generate frame data of one frame in a 2V period. The vertical filter unit 303 only needs to have a computing capability to filter 1/2 frame data in a 1V period. Between the vertical filter unit 303 and the buffer memory 304, a frame data transfer capability of 1/2 frame is sufficient for a period of 1V. Between the buffer memory 304 and the image output unit 305, a frame data transfer capacity of 1/2 frame is sufficient for a period of 1V. The frame memory 302 can hold one frame of frame data, and the buffer memory 304 only needs to hold one frame of frame data. With this ability, you can perform any vertical reduction process. As a result, the circuit scale can be reduced and the operation clock can be lowered.
<3.2 Vertical Filter Processing (Part 2)>
FIG. 24 is a schematic block diagram showing the flow of data when vertical filtering is performed in the media processor.
[0090]
The figure includes a decoding unit 401, a buffer memory 402, a vertical filter unit 403, a buffer memory 404, a video output unit 405, and a control unit 406. Compared with FIG. 19, the decoding unit 401, the vertical filter unit 403, the buffer memory 404, and the video output unit 405 are the same as those in FIG. Therefore, the description of the same points will be omitted, and different points will be mainly described.
[0091]
The buffer memory 402 is different from the frame memory 302 in that the capacity may be smaller than the storage capacity for one frame.
The vertical filter unit 403 is different from the vertical filter unit 303 in that the vertical filter unit 403 notifies the control unit 406 of the fact (filter state) every time filtering processing of 64 lines in the vertical direction (4 macroblock lines in the frame before processing) is completed. Different. The unit of notification may be a unit of 2-3 macroblock lines.
[0092]
The decoding unit 401 is different from the decoding unit 301 in that the decoding unit 401 notifies the control unit 406 to that effect (decoding state) every time decoding of 64 lines is completed. The unit of notification may be a unit of 16 lines.
The control unit 406 corresponds to the IOP 211 in FIG. 2 and monitors the operation states of the decoding unit 401 and the vertical filter unit 403 based on notifications from each, so that the vertical filter processing does not exceed the decoding processing. In addition, the decoding unit 401 and the vertical filter unit 403 are controlled so that the decoding process does not overtake the vertical filter process. That is, the following two of the control unit 406 are controlled. One is that the pixel data of the macroblock line to be filtered is not written in the buffer memory 402 by the decoding unit 401, but the pixel of the macroblock line of the previous frame (or field) is written by the vertical filter unit 403. This is to prevent the filtering process from being performed on the data group. The other is to prevent the decoding unit 401 from overwriting the pixel data group of the next frame with respect to a macroblock line which is subject to vertical filtering by the vertical filter unit 403 but has not been processed.
[0093]
FIG. 25 is an explanatory diagram showing the control contents in the control unit 406.
The horizontal axis in the figure is time, and shows the operations of the control unit 406, VSYNC (vertical synchronization signal), decoding unit 401, vertical filter unit 403, and video output unit 405.
As shown in the figure, the decoding unit 401 notifies the control unit 406 every time 64 lines have been decoded, and the vertical filter unit 403 notifies the control unit 406 every time 64 lines have been filtered. To do. Under these notifications, the control unit 406 holds and updates the line number Nd for which decoding has been completed and the line number Nf for which filtering has been completed, and Nd (current frame)> Nf (current frame), Nd ( The decoding unit 401 and the vertical filter unit 403 are controlled so as to satisfy (next frame) <Nf (current frame). Specifically, the control unit 406 temporarily stops one of the decoding unit 401 and the vertical filter unit 403 when Nd and Nf approach each other (when the difference becomes equal to or less than a threshold value). Nd and Nf may be macroblock line numbers.
[0094]
Also, when Nd and Nf approach, one of the decoding unit 401 and the vertical filter unit 403 is temporarily stopped by the control unit 406 under the control of the control unit 406, but whether or not Nd and Nf approach each other The determination and the control for temporarily stopping the decoding unit 401 or the vertical filter unit 403 may be configured so as to be in charge of other than the control unit 406.
[0095]
For example, the vertical filter unit 403 notifies the decoding unit 401 of the filter state, and the decoding unit 401 determines whether Nd and Nf have approached according to the notification of the filter state and the internal decoding state. The decoding operation may be temporarily stopped or the vertical filter unit 403 may be temporarily stopped according to the determination result.
[0096]
Or, conversely, the decoding unit 401 notifies the vertical filter unit 403 of the decoding state, and the vertical filtering unit 403 determines whether Nd and Nf approach each other according to the notification of the decoding state and the internal filter state. It is good also as a structure which determines whether or not and stops the filter process temporarily according to the determination result, or stops the decoding part 401 temporarily.
<3.2.1 1/2 reduction>
FIG. 26 is a diagram showing the supply data amount of each part when the 1/2 reduction process is performed in FIG.
[0097]
The horizontal axis of the graph 901 indicates the amount of frame data on the buffer memory 402, and the vertical axis indicates time. The horizontal axis of the graph 902 indicates the amount of frame data on the buffer memory 404, and the vertical axis indicates time. A graph 903 shows the state of the image output unit 405 arranged in time series, and the time axis matches the vertical axes of the graphs 901 and 902.
[0098]
A solid line 904 on the graph indicates a supply state of frame data from the decoder unit 401 to the buffer memory 402. A broken line 905 on the graph indicates a frame data supply state from the buffer memory 402 to the vertical filter unit 403. A broken line 906 on the graph indicates a supply state of 1st field reduced image data from the vertical filter unit 403 to the buffer memory 404. A broken line 907 on the graph indicates a supply state of the 2nd field reduced image data from the vertical filter unit 403 to the buffer memory 404. A solid line 908 on the graph indicates a supply state of 1st field reduced image data from the buffer memory 404 to the image output unit 405. A solid line 909 on the graph indicates a supply state of the 2nd field reduced image data from the buffer memory 404 to the image output unit 405.
[0099]
As shown in the graph 901, immediately after the supply of n frame data from the decoder unit 401 to the buffer memory 402 is started, the supply of n frame data from the buffer memory 402 to the vertical filter unit 403 is started. Control is performed so that the supply of n frame data from the buffer memory 402 to the vertical filter unit 403 is completed immediately after the supply of n frame data from the decoder unit 401 to the buffer memory 402 is completed. As shown by a graph 902, control is performed so that the supply of frame data of n frames from the vertical filter unit 403 to the buffer memory 404 is completed during n−1 frame display.
[0100]
By controlling the apparatus in this manner, the frame data transfer capability between the decoder unit 401 and the buffer memory 402 is 1 frame in a period of 2V, and the frame data transfer capability between the buffer memory 402 and the vertical filter unit 403 is 1 frame in a period of 2V. From the vertical filter unit 403, the frame data transfer capability, the decoder unit 401 is an arithmetic capability to generate frame data of one frame in a 2V period, and the vertical filter unit 403 is an arithmetic capability to filter frame data of one frame in a 2V period. Between the buffer memories 404, a frame data transfer capability of 1/2 frame in a 2V period, and between the buffer memory 404 and the image output unit 405, a frame data transfer capability of 1/4 frame in a 1V period, a frame for several lines Buffer memory 402 that can hold data, frame data 1 frame A buffer memory 404 that can be lifting is required, respectively.
<3.2.2 1/4 reduction>
FIG. 27 is a diagram showing the data supply amount of each part when 1/4 reduction is performed in FIG.
[0101]
The horizontal axis of the graph 1001 indicates the amount of frame data on the buffer memory 402, and the vertical axis indicates time. The horizontal axis of the graph 1002 indicates the amount of frame data on the buffer memory 404, and the vertical axis indicates time. A graph 1003 is a graph in which the states of the image output unit 405 are arranged in time series, and the time axis matches the vertical axes of the graphs 1001 and 1002.
[0102]
A solid line 1004 on the graph indicates a frame data supply state from the decoder unit 401 to the buffer memory 402. A broken line 1005 on the graph indicates a supply state of frame data from the buffer memory 402 to the vertical filter unit 403. A broken line 1006 on the graph indicates a supply state of 1st field reduced image data from the vertical filter unit 403 to the buffer memory 404. A broken line 1007 on the graph indicates a supply state of the 2nd field reduced image data from the vertical filter unit 403 to the buffer memory 404. A solid line 1008 on the graph indicates a supply state of 1st field reduced image data from the buffer memory 404 to the image output unit 405. A solid line 1009 on the graph indicates a supply state of the 2nd field reduced image data from the buffer memory 404 to the image output unit 405.
[0103]
By controlling the apparatus in this manner, a frame data transfer capability of 1 frame is sufficient between the decoder unit 401 and the buffer memory 402 in a 2V period, and between the buffer memory 402 and the vertical filter unit 403 is 1 in a 2V period. The frame frame data transfer capability is sufficient, the decoder unit 401 is sufficient to generate frame data of one frame in a 2V period, and the vertical filter unit 403 is calculation capability of filtering one frame of frame data in a 2V period. Therefore, a frame data transfer capacity of 1/4 frame is sufficient between the vertical filter unit 403 and the buffer memory 404 in a 2V period, and 1/8 frame is sufficient between the buffer memory 404 and the image output unit 405 in a 1V period. Frame data transfer capability is sufficient. The buffer memory 402 can hold frame data for several lines, and the buffer memory 404 only needs to hold 1/2 frame data.
[0104]
Each of these required performances is an average ability in a period of 1V at the shortest, and a large peak performance is not required in a period where the reduction rate is short.
In the case where the processing performance is required most but no reduction is required, the frame data transfer capability of one frame and the buffer memory are required between the decoder unit 401 and the buffer memory 402 in the period of 2V. Between 402 and the vertical filter unit 403, a frame data transfer capability of 1 frame in a 2V period, a decoder unit 401 has an arithmetic capability to generate frame data of 1 frame in a 2V period, and the vertical filter unit 403 has a 1 in 2V period. Computational capability for filtering frame data of a frame, between the vertical filter unit 403 and the buffer memory 404, a frame data transfer capability of 1 frame in a 2V period, and between the buffer memory 404 and the image output unit 405 1 in a 1V period / 2 frame data transfer capability, buffer that can hold frame data for several lines The memory 402 is a buffer memory 404 that can hold two frames of frame data. With this capability, any vertical reduction processing can be performed. As a result, the circuit scale can be reduced and the operation clock can be lowered.
<4. Modification>
28 and 29 are diagrams illustrating a first modification of the left half and the right half of the pixel parallel processing unit. In these drawings, the same constituent elements as those in FIGS. 3 and 4 are denoted by the same reference numerals, and the description thereof will be omitted.
[0105]
28 and 29 include pixel processing units 1 a to 16 a instead of the pixel processing units 1 to 16 of FIGS. 3 and 4, and pixel transfer units 17 a and 18 b instead of the pixel transfer units 17 and 18. Since the pixel processing units 1a to 16a have the same configuration, the pixel processing unit 1a will be described as a representative.
The pixel processing unit 1a includes a selection unit A104a and a selection unit B105a instead of the selection unit A104 and the selection unit B105 in the pixel processing unit 1.
[0106]
The selection unit A104a is different from the selection unit A104 in that the number of input is changed from two to three. That is, the selection unit A 104a has more pixel data inputs than the delay unit (delay unit B) of the two adjacent pixel transfer units (or pixel processing units).
Similarly, in the selection unit B105a, the pixel data input of the delay unit (delay unit B) of the two adjacent pixel transfer units (or pixel processing units) is increased.
[0107]
The pixel transfer unit 17a includes a selection unit B1703a to a selection unit G1708a instead of the selection unit B1703 to the selection unit G1708. Selection unit B1703a to selection unit G1708a each have three inputs instead of two inputs. The increasing input is the pixel data input from the two left delay units.
The pixel transfer unit 18a includes a selection unit B1803a to a selection unit G1808a instead of the selection unit B1803 to the selection unit G1808. Selection unit B1803a to selection unit G1808a each have three inputs instead of two inputs. The increasing input is the pixel data input from the two right delay devices.
[0108]
According to this configuration, it is possible to perform a filter process that uses a pixel to be processed and two pixels adjacent to the left and right of the pixel in order.
For example, the pixel processing unit 1a can calculate the following equation.
a0 ・ X9 + a1 (X11 + X7) + a2 (X13 + X5) + a3 (X15 + X3)
30 and 31 are diagrams illustrating a second modification of the left half and the right half of the pixel parallel processing unit.
[0109]
30 and 31 include a pixel processing unit 1b and a pixel processing unit 16b instead of the pixel processing unit 1 and the pixel processing unit 16 of FIGS.
The pixel processing unit 1b includes a selection unit b105b instead of the selection unit B105 in the pixel processing unit 1. Selection unit B105b differs from selection unit B105 in that it has a feedback input from delay unit B107.
[0110]
The pixel processing unit 16b includes a selection unit A1604b instead of the selection unit A1604 in the pixel processing unit 16. The selection unit A1604b differs from the selection unit A1605 in that it has a feedback input from the delay unit A1606.
According to this configuration, the pixel processing unit 1b performs, for example, the following calculation.
a3 * X6 + a2 * X7 + a1 * X8 + a0 * X9 + a1 * X10 + a2 * X11 + a3 * X12
At this time, the output of the pixel processing unit 2 is as follows.
[0111]
a3 * X20 + a2 * X21 + a1 * X22 + a0 * X23 + a1 * X24 + a2 * X24 + a3 * X24
At this time, the output of the pixel processing unit 16b is as follows.
a3 * X21 + a2 * X22 + a1 * X23 + a0 * X24 + a1 * X24 + a2 * X24 + a3 * X24
As described above, in FIGS. 30 and 31, when the leftmost pixel data of the data string is transferred to the leftmost pixel processing unit 1b, the selection unit B105b receives the feedback input from the delay unit B in the pixel processing unit 1b. select. When the rightmost pixel data of the data string is transferred to the rightmost pixel processing unit 16b, the selection unit A1604b selects the feedback input from the delay device A1606.
[0112]
32 and 33 are diagrams illustrating a second modification of the left half and the right half of the pixel parallel processing unit.
32 and 33 include pixel processing units 1c to 16c instead of the pixel processing units 1 to 16 of FIGS. 3 and 4, and pixel transfer units 17c and 18c instead of the pixel transfer units 17 and 18. Since the pixel processing units 1c to 16c have the same configuration, the pixel processing unit 1a will be described as a representative.
[0113]
The pixel processing unit 1c includes a selection unit A104c and a selection unit B105c instead of the selection unit A104 and the selection unit B105 in the pixel processing unit 1.
The selection unit A104c is different from the selection unit A104 in that the number of input is changed from two to three. That is, in the selection unit A104c, the pixel data input of the delay unit (delay unit B) of the two adjacent pixel transfer units (or pixel processing units) is increased.
[0114]
In the selection unit B105c, the pixel data input of the delay unit (delay unit B) of the two adjacent pixel transfer units (or pixel processing units) and the feedback input from the delay unit B107 are increased.
Similarly to the pixel transfer units 17a and 18a shown in FIGS. 28 and 29, the pixel transfer units 17c and 18c have three inputs instead of two inputs.
[0115]
According to this configuration, the pixel processing unit 1c performs, for example, the following calculation.
a3 * X9 + a2 * X9 + a1 * X9 + a0 * X9 + a1 * X11 + a2 * X13 + a3 * X15
At this time, the output of the pixel processing unit 2c is as follows.
a3 * X10 + a2 * X10 + a1 * X10 + a0 * X10 + a1 * X12 + a2 * X14 + a3 * X16
At this time, the output of the pixel processing unit 15c is as follows.
a3 * X17 + a2 * X19 + a1 * X21 + a0 * X23 + a1 * X23 + a2 * X23 + a3 * X23
At this time, the output of the pixel processing unit 16c is as follows.
a3 * X18 + a2 * X20 + a1 * X22 + a0 * X24 + a1 * X24 + a2 * X24 + a3 * X24
FIG. 34 is a diagram showing a modification of the POUA 207.
[0116]
The POUA 207 shown in the figure has an upsampling circuit 22a and a downsampling circuit 23a added to FIG. The description of the same points as in FIG. 2 will be omitted, and different points will be mainly described.
The upsampling circuit 22a expands the pixel data group input from the input buffer group 22 in the vertical direction. For example, in order to interpolate the pixel data so that the pixel data group input from the input buffer group 22 is doubled in the vertical direction, the same pixel data group for one input of the pixel data group from the input buffer group 22 Is output to the pixel parallel processing unit 21 twice.
[0117]
The downsampling circuit 23a reduces the pixel data group input from the pixel parallel processing unit 21 in the vertical direction. For example, the pixel data is thinned out so that the pixel data group input from the pixel parallel processing unit 21 is halved in the vertical direction. That is, with respect to two input of the pixel data group from the pixel parallel processing unit 21, one time is discarded and one time is output.
[0118]
According to this configuration, the pixel parallel processing unit 21 doubles in the vertical direction on the input side and halves in the vertical direction on the output side, so the data amount per frame in the external memory 220 is 1 / vertical in the vertical direction. As a result, the amount of data transferred from the POUC 209 to the POUA 207 can be halved. As a result, the bus neck can be eliminated when accesses to the internal ports of the dual port memory 100 are concentrated.
[0119]
In addition, since the pixel arithmetic device of the present invention performs the filtering process for resizing an image on a plurality of pixels in parallel, it can be applied to digital video equipment such as a media processor for handling moving picture compression / expansion processing, resizing, etc. Used.
[0120]
【The invention's effect】
A pixel arithmetic device according to the present invention is a pixel arithmetic device that performs filter processing, and includes N pixel processing means, supply means for supplying N pixel data and filter coefficients, and N pixel processing means in parallel. And control means for operating the device.
Each pixel processing means calculates using the pixel data supplied to the supplying means and the filter coefficient, then acquires pixel data from the pixel processing means adjacent to each pixel processing means, and uses the acquired pixel data And accumulate the calculation results. The control means controls the N pixel processing means so as to repeat the acquisition of the pixel data from the adjacent pixel processing means and the calculation and accumulation using the acquired pixel data for the number of taps.
[0121]
Here, the N pixel processing units form a first shifter that shifts N pixel data to the right and a second shifter that shifts N pixel data to the left. Each pixel processing means performs an operation using two pixel data shifted out from two adjacent pixel processing means.
According to this configuration, it is possible to make the number of taps variable, and it is possible to perform a filtering process that speeds up the process without increasing the frequency.
[0122]
In addition, the pixel arithmetic device of the present invention supplies pixel data of a difference image and pixel data of a reference frame as pixel data from a supply unit.
According to this configuration, it can be used not only for the filtering process but also for the MC (motion compensation) process, and it is not necessary to provide the filter device and the MC circuit independently, so that the circuit scale can be reduced. There is.
[Brief description of the drawings]
FIG. 1 is a block diagram showing an example of a circuit that performs FIR filter processing in the prior art.
FIG. 2 is a block diagram illustrating a configuration of a media processor including a pixel operation unit.
FIG. 3 is a block diagram showing a configuration of a pixel operation unit (POUA, POUB).
FIG. 4 is a block diagram illustrating a configuration of a left half of a pixel parallel processing unit.
FIG. 5 is a block diagram showing a configuration of a right half of a pixel parallel processing unit.
6A is a block diagram illustrating a detailed configuration of an input buffer group 22. FIG.
FIG. 2B is a block diagram illustrating a detailed configuration of the selection unit in the input buffer group 22.
7 is a block diagram showing a configuration of an output buffer group 23. FIG.
FIG. 8 is a diagram illustrating initial input values of pixel data when filter processing is performed in the pixel arithmetic unit.
9 is an explanatory diagram showing initial input values of pixel data to the pixel processing unit 1. FIG.
10 is a diagram illustrating a calculation process in filter processing in the pixel processing unit 1. FIG.
FIG. 11 is an explanatory diagram showing calculation contents of filter processing in the pixel processing unit 1;
FIG. 12 is a diagram showing input / output pixel data when MC (motion compensation) processing (P picture) is performed in the pixel operation unit.
FIG. 13 is an explanatory diagram showing a decoding target frame and a reference frame in MC processing.
FIG. 14 is a diagram showing input / output pixel data when MC processing (B picture) is performed in the pixel operation unit.
FIG. 15 is a diagram showing input / output pixel data when OSD (on-screen display) processing is performed in the pixel calculation unit.
FIG. 16 is an explanatory diagram of OSD (on-screen display) processing in the pixel calculation unit.
FIG. 17 is a diagram illustrating input / output pixel data when ME (motion prediction) processing is performed in the pixel calculation unit.
FIG. 18 is an explanatory diagram of ME (motion prediction) in the pixel calculation unit.
FIG. 19 is a schematic block diagram illustrating a data flow when performing vertical filter processing in a media processor.
FIG. 20 is an explanatory diagram when performing vertical ½ reduction.
FIG. 21 is an explanatory diagram when performing vertical ½ reduction in the prior art.
FIG. 22 is an explanatory diagram when vertical ¼ reduction is performed.
FIG. 23 is an explanatory diagram when vertical ¼ reduction is performed in the prior art.
FIG. 24 is another schematic block diagram showing the flow of data when vertical filtering is performed in the media processor.
FIG. 25 is an explanatory diagram showing timings of decoding processing and vertical filter processing;
FIG. 26 is an explanatory diagram when vertical ½ reduction is performed.
FIG. 27 is an explanatory diagram when vertical ¼ reduction is performed.
FIG. 28 is a diagram illustrating a first modification of the left half of the pixel parallel processing unit.
FIG. 29 is a diagram illustrating a first modification of the right half of the pixel parallel processing unit.
FIG. 30 is a diagram illustrating a second modification of the left half of the pixel parallel processing unit.
FIG. 31 is a diagram illustrating a second modification of the right half of the pixel parallel processing unit.
FIG. 32 is a diagram illustrating a third modification of the left half of the pixel parallel processing unit.
FIG. 33 is a diagram illustrating a third modification of the right half of the pixel parallel processing unit.
FIG. 34 is a diagram showing a modification of the pixel processing unit.
[Explanation of symbols]
1 Pixel processing unit
1 to 16 pixel processing unit
17 Pixel transfer unit
18 pixel transfer section
21 Pixel parallel processing unit
22 Input buffers
22a Upsampling circuit
23 Output buffer group
23a Downsampling circuit
23a-23h Latch
23a-23p latch
23i-23p latch
24 Instruction memory
24a-24h selector
24a-24p selector
24i-24p selector
25 Instruction decoder
26 Indicator circuit
27 DDA circuit
100 dual port memory
104 Selection part A
104a Selection part A
104c Selection part A
105 Selector B
105a Selection part B
105b Selection part B
105c Selection part B
107 Delayer B
109 Delay D
120 Adder A
200 Media processor
201 Stream unit
201 Input port A
202 I / O buffer
202 Input port B
203 Setup processor
203 Input port C
204 bitstream FIFO
205 Variable length code decoding unit
206 TE
207 POUA
208 POUB
209 POUC
210 Audio unit
211 IOP
212 Video buffer memory
213 video unit
214 Host unit
215 RE
216 Filter section
217 Setup memory
218 Dedicated LSI
220 External memory
401 Decoder unit
402 Buffer memory
403 Vertical filter section
404 Buffer memory
405 Video output unit
406 control unit

Claims (2)

フィルタ処理を行う画素演算装置であって、
N個の画素処理手段と、
N個の画素データ及びフィルタ係数を供給する供給手段と、
N個の画素処理手段を並列に動作させる制御手段とを備え、
前記N個の画素処理手段は、クロック入力毎にN個の画素データを右シフトする第1シフタと、クロック入力毎にN個の画素データを左シフトする第2シフタを形成し、
前記第1シフタは、前記供給手段に供給された画素データを右シフトした後、前クロック入力において左隣の画素処理手段から右シフトされた画素データを右シフトし、
前記第2シフタは、前記供給手段に供給された画素データを左シフトした後、前クロック入力において右隣の画素処理手段から左シフトされた画素データを左シフトし、
各画素処理手段は、供給手段に供給された画素データとフィルタ係数とを用いて演算した後、各画素処理手段に対して隣接する2つの画素処理手段からクロック入力毎にシフトされる2つの画素データをクロック入力毎に取得し、取得した画素データを用いてクロック入力毎に演算し演算結果をクロック入力毎に累積することを特徴とする画素演算装置。
A pixel arithmetic device that performs filter processing,
N pixel processing means;
Supply means for supplying N pixel data and filter coefficients;
Control means for operating N pixel processing means in parallel,
The N pixel processing means form a first shifter that shifts N pixel data to the right for each clock input, and a second shifter that shifts N pixel data to the left for each clock input,
The first shifter shifts the pixel data supplied to the supply unit to the right, and then right-shifts the pixel data shifted right from the pixel processing unit adjacent to the left in the previous clock input,
The second shifter shifts the pixel data supplied to the supply means to the left, and then shifts the pixel data left-shifted from the right pixel processing means at the previous clock input to the left,
Each pixel processing means calculates using the pixel data supplied to the supply means and the filter coefficient, and then shifts two pixels that are shifted for each clock input from two pixel processing means adjacent to each pixel processing means. acquires data for each clock input, calculated for each clock input using the acquired pixel data, the operation result pixel calculation apparatus characterized by accumulating every clock input.
フィルタ処理のタップ数を指定する手段をさらに備え、It further comprises means for specifying the number of taps for filtering,
前記画素処理手段は、隣接する画素処理手段からの画素データの取得と、取得した画素データを用いた演算及び累積とを、指定されたタップ数に応じたクロック入力回数繰り返すことを特徴とする請求項1記載の画素処理装置。  The pixel processing means repeats acquisition of pixel data from adjacent pixel processing means, and calculation and accumulation using the acquired pixel data, the number of clock inputs corresponding to a specified number of taps. Item 2. A pixel processing apparatus according to Item 1.
JP2001125119A 2000-04-21 2001-04-23 Pixel arithmetic unit Expired - Fee Related JP4686048B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001125119A JP4686048B2 (en) 2000-04-21 2001-04-23 Pixel arithmetic unit

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP2000120754 2000-04-21
JP2000120753 2000-04-21
JP2000-120754 2000-04-21
JP2000-120753 2000-04-21
JP2001125119A JP4686048B2 (en) 2000-04-21 2001-04-23 Pixel arithmetic unit

Publications (2)

Publication Number Publication Date
JP2002008025A JP2002008025A (en) 2002-01-11
JP4686048B2 true JP4686048B2 (en) 2011-05-18

Family

ID=27343160

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001125119A Expired - Fee Related JP4686048B2 (en) 2000-04-21 2001-04-23 Pixel arithmetic unit

Country Status (1)

Country Link
JP (1) JP4686048B2 (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7956930B2 (en) 2006-01-06 2011-06-07 Microsoft Corporation Resampling and picture resizing operations for multi-resolution video coding and decoding
JP4042065B1 (en) * 2006-03-10 2008-02-06 健治 吉田 Input processing system for information processing device
KR100771879B1 (en) * 2006-08-17 2007-11-01 삼성전자주식회사 Method of deblocking filtering decreasing inner memory storage and a video processing device using the method
JP5522893B2 (en) * 2007-10-02 2014-06-18 キヤノン株式会社 Image processing apparatus, image processing method, and program
US8812572B2 (en) 2008-07-02 2014-08-19 Renesas Electronics Corporation Filter processing device and semiconductor device
JP4978936B2 (en) * 2008-08-27 2012-07-18 京セラドキュメントソリューションズ株式会社 Two-dimensional spatial filter device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06292178A (en) * 1993-03-31 1994-10-18 Sony Corp Adaptive video signal arithmetic processor
JPH10134176A (en) * 1996-10-29 1998-05-22 Sony Corp Method and device for image signal processing
JPH10134175A (en) * 1996-10-29 1998-05-22 Sony Corp Processor and method for image processing
JP2000020705A (en) * 1998-06-30 2000-01-21 Sharp Corp Parallel image processing processor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06292178A (en) * 1993-03-31 1994-10-18 Sony Corp Adaptive video signal arithmetic processor
JPH10134176A (en) * 1996-10-29 1998-05-22 Sony Corp Method and device for image signal processing
JPH10134175A (en) * 1996-10-29 1998-05-22 Sony Corp Processor and method for image processing
JP2000020705A (en) * 1998-06-30 2000-01-21 Sharp Corp Parallel image processing processor

Also Published As

Publication number Publication date
JP2002008025A (en) 2002-01-11

Similar Documents

Publication Publication Date Title
US7692688B2 (en) Method for correcting distortion of captured image, device for correcting distortion of captured image, and imaging device
US6411333B1 (en) Format conversion using patch-based filtering
US8111331B2 (en) Image resizer and resizing method
US6327000B1 (en) Efficient image scaling for scan rate conversion
US8072511B2 (en) Noise reduction processing apparatus, noise reduction processing method, and image sensing apparatus
JPH06326996A (en) Method and equipment for decoding compressed video data
JP5788198B2 (en) Architecture for video processing, high-speed still image processing, and high-quality still image processing
JPH09214972A (en) Decoder circuit, mpeg video stream decoding method and computer
JP2007221631A (en) Pickup image distortion correction method, pickup image distortion correction device, imaging method and imaging device
JP6190386B2 (en) Video ringer ringing reduction
US8260075B2 (en) Two-dimensional filter arithmetic device and method
JP4686048B2 (en) Pixel arithmetic unit
US8014618B2 (en) High-speed motion compensation apparatus and method
US6829302B2 (en) Pixel calculating device
KR100794098B1 (en) Pixel calculating device
KR100287866B1 (en) Vertical image format conversion device and digital receiving system using same
JP4540191B2 (en) Image processing device
Li et al. A general-purpose FPGA-based reconfigurable platform for video and image processing
JP2011059911A (en) Image processing apparatus
TWI424371B (en) Video processing device and processing method thereof
JP2009296046A (en) Imaging apparatus
JP2000059663A (en) Image pickup device
KR19990051709A (en) NTS video video resolution conversion system
JP2004140879A (en) Digital camera and image processing method in digital camera
JPH0937215A (en) Compression interpolation circuit and video equipment with aspect conversion function

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071219

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100817

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100824

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101019

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101019

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110118

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110214

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140218

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4686048

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees