Armadilloフォーラム

カラーフォーマットの変更について

e-yamada

2017年7月21日 20時26分

お世話になっております。

armadillo-840にて、gstreamerによる動画再生時を行っておりますが、
RGBが正しく表示されておらず、改善方法を検討しております。

現状のfbsetは下記の出力となっており、RGBは565となっております。

 mode "1280x1024-60"
  # D: 108.003 MHz, H: 63.983 kHz, V: 60.021 Hz
  geometry 1280 1024 1920 4096 16
  timings 9259 248 48 1 1 112 40
  hsync high
  vsync high
  rgba 5/11,6/5,5/0,0/0 ★
 endmode

下記ページの解説では、カラーフォーマットはARGB8888・RGB565の2種類との記載があり、
必要に応じて変更可能と思われますが、変更方法についてご教示いただきたく存じます。

http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…

 機能(フレームバッファ)
   最大解像度: 1920 x 1080 px
   カラーフォーマット: ARGB8888 (32bit) or RGB565 (16bit) ★
   ダブルバッファサポート

以上よろしくお願いいたします。

コメント

at_kojiro.yamada

2017年7月24日 21時44分

> お世話になっております。
>
> armadillo-840にて、gstreamerによる動画再生時を行っておりますが、
> RGBが正しく表示されておらず、改善方法を検討しております。

RGBが正しく表示されない、とはどのような見た目になっているのでしょうか?

RGBが正しく表示された画像 と RGBが正しく表示されていない画像が無いと
カラーフォーマットを変更することで解決するかどうかもわかりません。

Armadillo-840 製品マニュアル 6.3. ビデオ(※)にて、
HDMIモニタおよびLCDにテスト画像を表示させる方法が記載されています。

そちらを実行した場合は、どのような見た目になっているのでしょうか?

http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…

>
> 現状のfbsetは下記の出力となっており、RGBは565となっております。
>
>  mode "1280x1024-60"
>   # D: 108.003 MHz, H: 63.983 kHz, V: 60.021 Hz
>   geometry 1280 1024 1920 4096 16
>   timings 9259 248 48 1 1 112 40
>   hsync high
>   vsync high
>   rgba 5/11,6/5,5/0,0/0 ★
>  endmode
>
> 下記ページの解説では、カラーフォーマットはARGB8888・RGB565の2種類との記載があり、
> 必要に応じて変更可能と思われますが、変更方法についてご教示いただきたく存じます。

APIとしては
1. struct fb_var_screeninfo の メンバ変数(red,green,blue,transp)に、
bit fieldのoffsetとlengthをセット
2. ioctl で FBIOPUT_VSCREENINFO を発行
することで変更します。

atmark-distで利用しているbusybox版のfbsetでは、rgba の項目を変更できま
せんでした(対応していなかったため)。

debian wheezyのfbsetでは、対応しています。

debian wheezyのfbsetのarmhf用バイナリ(※)を添付しますので
[Armadillo-840]# chmod +x ./fbset
[Armadillo-840]# ./fbset -fb /dev/fb1 -rgba "8/16,8/8,8/0,8/24"
のようにして変更できるか確かめてみてください。

※ 下記URLからarmhf用のdebianパッケージをダウンロードし、dpkg -xでパッケージ
を展開してバイナリを抜き出しました。
https://packages.debian.org/wheezy/fbset

また、Armadillo-840の標準イメージ + Armadillo-840液晶モデル開発セットの
組み合わせでは、
rgba 8/16,8/8,8/0,8/24
となっておりますので、
ハードウェアおよびソフトウェアに対して何かしらカスタマイズをされている
かと思います。

おそらく、カスタマイズの際に rgba の項目を変更する手順を行っております
ので、変更点を確認してみるのも良いかと思います。

ファイル ファイルの説明
fbset_wheezy_armhf.zip fbsetコマンド(debian wheezy armhf用バイナリ)

at_kojiro.yamada様

ご回答いただきありがとうございます。

> Armadillo-840 製品マニュアル 6.3. ビデオ(※)にて、
> HDMIモニタおよびLCDにテスト画像を表示させる方法が記載されています。
>
> そちらを実行した場合は、どのような見た目になっているのでしょうか?

情報が不足しており申し訳ございません。

下記コマンドの表示結果を添付させていただきますので(001.jpg)、ご確認のほどよろしくお願いいたします。

> gst-launch-1.0 videotestsrc ! "video/x-raw,width=1920,height=1080" ! fbdevsink device=/dev/fb0

なお、現状のfb0の状態は下記のようになっております(解像度の変更を行っております)。

 mode "1920x1080-30"
  # D: 74.996 MHz, H: 34.089 kHz, V: 30.302 Hz
  geometry 1920 1080 1920 4320 16
  timings 13334 148 88 1 1 44 43
  rgba 5/11,6/5,5/0,0/0
 endmode

また、下記画像につきましても添付させていただきます。

 ・002.jpg:元画像
 ・003.jpg:armadillo-840からディスプレイへの表示画像
 ・004.jpg:armadillo-840からディスプレイへの表示画像(白色の部分に緑が少し混ざって表示)
 ・005.jpg:動画のグラデーション表示(色が変化している箇所にムラが出る)。

> debian wheezyのfbsetでは、対応しています。
>
> debian wheezyのfbsetのarmhf用バイナリ(※)を添付しますので
> [Armadillo-840]# chmod +x ./fbset
> [Armadillo-840]# ./fbset -fb /dev/fb1 -rgba "8/16,8/8,8/0,8/24"
> のようにして変更できるか確かめてみてください。

ご教示いただきましたfbsetにて、コマンドを実行してみましたが、特に変化はみられませんでした。

[root@armadillo840-0 (ttySC2) ~]# /mnt/sd/common/fbset -fb /dev/fb0 -rgba "8/16,8/8,8/0,8/24"
[root@armadillo840-0 (ttySC2) ~]# /mnt/sd/common/fbset -fb /dev/fb0

mode "1920x1080-30"
# D: 74.996 MHz, H: 34.089 kHz, V: 30.302 Hz
geometry 1920 1080 1920 4320 16
timings 13334 148 88 1 1 44 43
rgba 5/11,6/5,5/0,0/0
endmode

> おそらく、カスタマイズの際に rgba の項目を変更する手順を行っております
> ので、変更点を確認してみるのも良いかと思います。

変更点につきましては、再度見直しを実施したいと思います。

以上よろしくお願いいたします。

ファイル ファイルの説明
001.jpg
002.jpg
003.jpg
004.jpg
005.jpg

at_kojiro.yamada

2017年7月25日 15時41分

・グラデーション画像 縞々
・h.264 グラデーション

などで検索すると 「バンディング」 について書かれたサイトがヒットしますね。

fb(frame buffer)のカラーフォーマットだけでなく、
再生表示する画像・動画データ、モニタの設定も絡む問題かもしれません。

画像(動画)を、
・Armadillo-840 から 他のモニタに表示する
・Armadillo-840以外(PCなど) から そのモニタに表示する
といった場合はどうなるでしょうか?

at_kojiro.yamada様

ご回答いただきありがとうございます。

> 画像(動画)を、
> ・Armadillo-840 から 他のモニタに表示する
> ・Armadillo-840以外(PCなど) から そのモニタに表示する
> といった場合はどうなるでしょうか?

ご教示いただきました情報より、表示するファイル(動画)・モニタの変更にて
確認を行いましたが、状態に変化は見られませんでした。

>> おそらく、カスタマイズの際に rgba の項目を変更する手順を行っております
>> ので、変更点を確認してみるのも良いかと思います。

変更点について再度見直しを行ったところ、
下記の箇所にてRGBの設定をRGB565に変更している事が判明しました。

 /arch/arm/mach-shmobile/board-armadillo840.c

  static struct sh_mobile_lcdc_info lcdc0_info = {
    .ch[0] = {
      .fourcc  = V4L2_PIX_FMT_BGR32,
      .fourcc  = V4L2_PIX_FMT_RGB565, ★変更

  static struct sh_mobile_lcdc_info lcdc1_info = {
    .ch[0] = {
      .fourcc  = V4L2_PIX_FMT_BGR32,
      .fourcc  = V4L2_PIX_FMT_RGB565, ★変更

これを元に戻す事でfbsetが下記の出力となり、色の表示が正しく行われる事が確認できました。

 [root@armadillo840-0 (ttySC2) ~]# fbset -fb /dev/fb0
 mode "1920x1080-30"
  # D: 74.996 MHz, H: 34.089 kHz, V: 30.302 Hz
  geometry 1920 1080 1920 4320 32
  timings 13334 148 88 1 1 44 43
  rgba 8/16,8/8,8/0,8/24
 endmode

お忙しい中ご教示いただきまして誠にありがとうございました。
今後ともよろしくお願いいたします。