🐼

Zigで簡単なビデオフォーマットのコンバータを作った。(ChatGPT4とペアプログラミング)

2023/04/26に公開

Zigで簡単なビデオフォーマットのコンバータを作りました。

https://github.com/tetsu-koba/convert2i420

Chat GPT4に作ってもらおうといろいろ指示したのですが、あんまりすんなりいきませんでした。

  • Zig言語の最新の文法に対応できていないのでコンパイルエラーになるものが生成される。
  • ビデオフォーマットの仕様を勘違いしている。

実際の指示はこんな感じ。

NV12のフォーマットに画像データをI420のフォーマットに変換する関数をZig言語で書いてください。その関数は以下のようなものです。
pub fn nv12ToI420(nv12_data: []const u8, yuv420_data: []u8, width: u32, height: u32) void

ソースコード内のコメントは英語で書いてください。またmain()は不要です。

この関数をfrom_nv12.zig のファイルに書きました。この関数を呼んでテストするプログラムをfrom_nv12_test.zig として書いてください。これは zig test で実行できる形式にしてください。ソースコード内のコメントは英語で書いてください

テストデータの中の数値が全て0x42になっています。これを以下のように変更してください。
Yプレーンのデータは0x80からインクリメントした値。Uプレーンのデータは0x40からインクリメントした値。Vプレーンのデータは0xa0からインクリメントした値。このように全ての数値は異なるものを使用してください。

nv_dataのデータの中のUプレーンとVプレーンの並びが間違っていると思いますがどうですか?

先ほど書いてもらったnv12ToI420の関数もNV12のUVのデータの並びが間違っているようなので書き直してください。

どうもありがとう。あとはこちらでチューニングします。

まるで新人くんとペアプログラミングしているようです。w

https://twitter.com/tetsu_koba/status/1651198875691261958?conversation=none
https://twitter.com/tetsu_koba/status/1651206945838350337?conversation=none
https://twitter.com/tetsu_koba/status/1651208024902733825?conversation=none
https://twitter.com/tetsu_koba/status/1651211943779393536?conversation=none

関連

https://zenn.dev/tetsu_koba/articles/e81842ca212d03
https://zenn.dev/tetsu_koba/articles/43d8ed81cc1c2f

Discussion