2013年6月8日土曜日

Blackmagic Design Intensity Shuttle for USB 3.0 + Sony Handycam HDR-CV500V

コントロールパネル
Blackmagic Design Control Panel の Set default video standard を HD 1080i 59.94 に設定する.

Media Express (version 3.2)
Edit > Preferences の Project Video Format を HD 1080i 59.94 に設定する.

Handycam
撮影設定 > HD/SD設定 を HD画質 に設定する.
撮影設定 > 録画モード を HD FH に設定する. < 必要ない.
一般設定 > 出力設定 > HDMI解像度 > ハイビジョン画質 を 1080i に設定する.

2013年4月17日水曜日

bashの書式いろいろ

他のシェルスクリプトを呼び出す

source ./common.sh

文字列を分割する

$aをカンマで分割したい場合
IFS=','
set -- $a
$1,$2,...に分割された部分文字列が順次入る.
IFSがデリミタ.

関数

関数の定義は
funcname() {
 :
}
引数は,$1,$2,...に入る.
返り値は,echo で返す.
関数は`funcname`で呼び出す.
引数はコマンドラインでの作法と同じ.

簡単な例:

to_cyg() {
    echo "/cygdrive/${1/:/}"
}
data_basedir="c:/data/trimming/"
src_dir="${data_basedir}src/"
cyg_src_dir=`to_cyg ${src_dir}`

ローカル変数

関数内でのみ有効なローカル変数の使用
local $filename=$1

計算

bash限定とのことだが(未確認),exprを明示的に呼び出さなくてもよい記述方法として,$(( と $)) で囲む方法がある.
中では,変数名に$を付けなくてよい.
local xmin=$2
local ymin=$3
local xmax=$4
local ymax=$7
local width=$((xmax - xmin + 1))
local height=$((ymax - ymin + 1))

配列

配列への代入は,()でくくる.
p=(`split_answer ${answer}`)
通常の変数と同じように使用できる.添字に変数を使う場合,$は不要.
p_width=5
:
${p[p_width]}

2013年4月16日火曜日

bashでファイル名操作


#! /usr/bin/sh

f="/cygdrive/c/data/trimming/src/JPCNN093.IMG"

echo "full: $f"

directory=${f%/*}
echo "directory: $directory"

other_directory=${directory/src/dst}
echo "other_directory: $other_directory"

basename=${f##*/}
echo "basename: $basename"

filename=${basename%.*}
echo "filename: $filename"

extension=${basename##*.}
echo "extension: $extension"

stringstreamをatoiの代わりに使う

そこまでして無理に使わなくてもという気もしますが.

#include <sstream>

std::stringstream s;
s << argv[1];
s >> width;

s.clear();
s << argv[2];
s >> height;

これで,

width = atoi(argv[1]);
height = atoi(argv[2]);

と同じことができる.

stringstreamを使いまわすときに,s.clear() すること.

入出力をまとめることもできるけれども,文字列の間に区切り文字が必要.

std::stringstream s;
s << argv[1] << " " << argv[2];
s >> width >> height;

2013年4月4日木曜日

sedで置換

基本技だがすぐに忘れてしまう...

sed -e "s/置換前/置換後/g" 入力ファイル名 > 出力ファイル名


2013年2月17日日曜日

cudaMallocの速度

cudaMallocに要する時間の測定結果.

環境

  • windows 8 64bit
  • visual c++ 2010 express
  • cuda 5.0
  • intel core-i5 3317 1.70GHz
  • GeForce GT 620M
  • cudaMallocとcudaFreeだけ,転送はしない
結果

  • 0.3msec / cudaMalloc()
  • サイズ4Mくらいまでは一定時間と考えてよい
  • 大規模な処理なら無視できるが,時間にシビアな用途(画像処理など,1/60=16.7msecで作業を終わらせる必要があるなど)では,複数回実行すると実行時間に影響を与えるレベル.



2013年2月14日木曜日

typedefされている型が,同じかどうか調べる

typedefされている型が,同じかどうか調べる.
typeidを使う.
typeinfoをインクルードする.


#include <iostream>
#include <typeinfo>
typedef int type_a;
typedef int type_b;
typedef short type_c;
int main(int argc, char **argv)
{
  if (typeid(type_a) == typeid(type_b)) {
    std::cout << "same" << std::endl;
  } else {
    std::cout << "different" << std::endl;
  }
  if (typeid(type_a) == typeid(type_c)) {
    std::cout << "same" << std::endl;
  } else {
    std::cout << "different" << std::endl;
  }
  return 0;
}