---------------------------------------------------------------------------------------------------
AviSynth plug-in L-SMASH Source r694
---------------------------------------------------------------------------------------------------

【概要】
L-SMASH Source は、muken氏が L-SMASH Works 開発の一環として実装を進めている OSS であり、
MP4/MOV/QT/3gp/3g2/F4V/M4A 等の L-SMASH 対応コンテナに格納された映像・音声ストリームを
AviSynth で読み込むためのプラグインです。
コーデックのデコードは ffmpeg や Libav が受け持ちます（当プラグインは ffmpeg を使用）。

r416 より LWLibavVideoSource() および LWLibavAudioSource() が追加され、 ffms を使用せずとも
Libav/ffmpeg がサポートするコンテナ・コーデックの読み込みが可能となりました。


===================================================================================================

【導入】
LSMASHSource.dll および msvcr100.dll を AviSynth の plugins フォルダにコピー。
または任意のディレクトリに置き、LoadPlugin で読み込みます。

	例)
	LoadPlugin("d:\hogehoge\LSMASHSource.dll")


===================================================================================================

【AviSynthスクリプトの書式】
映像読み込みと音声読み込みが分かれており、それぞれの指定が必要です。



■映像読み込みの書式 (L-SMASHがサポートするコンテナの読み込み。MP4やMOVなど)

LSMASHVideoSource("source file", track, threads, seek_threshold, seek_mode, dr)

	"source file"
		読み込む映像ファイルを指定します。

	track
		映像コンテナから読み込むトラックナンバーを指定します。
		=0   自動判定。最初に見つけたトラックの映像を読み込みます（推奨）
		=n   任意のトラックナンバー(n)を指定して読み込みます

	threads
		処理するスレッド数を指定します。
		=0   自動判定（推奨）
		=n   任意のスレッド数(n)を指定して処理します

	seek_threshold
		時間軸の未来方向にランダムアクセス（シーク）したフレーム間隔が設定範囲内であれば、
		キャッシュされているフレームから即デコードをして余分な処理を省きます。
		範囲を広げすぎるとIピクチャからデコードした方が速く、むしろ遅くなるケースが
		あるため、程々に設定するほうが良いでしょう。
		編集時など、ランダムなシークが要求されるシーンで役立つ可能性があります。
		=n   seek_thresholdを有効化するフレーム数(n)を指定します。推奨値は10

	seek_mode
		シーク時の処理方法を指定します。
		=0   Normalモード。3回目のシーク失敗時にUnsafeモードで3回目と同じフレームから
	         デコードを試行し、それでも駄目な場合は前のフレームのコピーを生成します（推奨）
		=1   Unsafeモード。1回目のエラーで前のフレームのコピーを生成します
		=2   Aggressiveモード。シーク失敗（エラー）で再試行を一切しません。簡易確認向け。

	dr
		Libav/ffmpeg(libavcodec)のcustom get_buffer()を使用したダイレクト読み込みをします。
		dr を使用しない場合と比較して約50%前後のスピードアップを実現（muken氏談）。
		ただし、インタレース映像で縦32の倍数デコードをそのまま、H.264の場合は縦2ラインが
		付加されるため、ストリームが表示すべき解像度にする場合は、読み込み後の映像解像度を
		確認のうえ、必要とあらば crop 処理を施してください。
		
		=true    ダイレクト読み込みを有効化します
		=false   ダイレクト読み込みを無効化します（デフォルト。従来の処理と同じ）



■音声読み込みの書式 (L-SMASHがサポートするコンテナの読み込み。MP4やM4Aなど)

LSMASHAudioSource("source file", track, skip_priming, layout)

	"source file"
		読み込む音声ファイルを指定します。または、映像と音声がmuxされたファイルを指定します。

	track
		音声を読み込むトラックナンバーを指定します。
		=0   自動判定。最初に見つけたトラックの音声を読み込みます（推奨）
		=n   任意のトラックナンバー(n)を指定して読み込みます

	skip_priming
		コンテナの edit list に encoder delay が記されている場合、それに基づいて
		音声の priming samples（余白的なデータ部分）をスキップデコードするか否かを指定します。
		=true   skip primingを有効化します
		=false  skip primingを無効化します

	layout
		音声チャネルを強制指定することができます。
		音声ストリームを利用する際、意図したレイアウトで扱うことが可能となります。
		
		= 引数は以下を参照（ダブルクォーテーションで括ること）
		
		FL  = フロント・レフト
		FR  = フロント・ライト
		FC  = フロント・センター
		LFE = 低域周波数エフェクト（0.1chの低音）
		BL  = バック（リア）・レフト
		BR  = バック（リア）・ライト
		FLC = フロント・レフトのセンター
		FRC = フロント・ライトのセンター
		BC  = バック（リア）・センター
		SL  = サイド・レフト
		SR  = サイド・ライト
		TC  = トップ・センター
		TFL = トップ・フロント・レフト
		TFC = トップ・フロント・センター
		TFR = トップ・フロント・ライト
		TBL = トップ・バック・レフト
		TBC = トップ・バック・センター
		TBR = トップ・バック・ライト
		DL  = ダウンミックス・レフト
		DR  = ダウンミックス・ライト
		
		例)
		layout="FL+FR+FC+LFE+BL+BR"		# 5.1chサラウンドの指定
		
		また、以下のようにシンプルな指定方法もあります。
		
		mono           = FC（モノラル）
		1              = mono 指定と同様
		stereo         = FL+FR（ステレオ）
		2              = stereo 指定と同様
		2.1            = FL+FR+LFE
		3.0            = FL+FR+FC
		3.1            = FL+FR+FC+LFE
		3.0(back)      = FL+FR+BC
		4.0            = FL+FR+FC+BC
		4.1            = FL+FR+FC+LFE+BC
		quad           = FL+FR+BL+BR
		quad(side)     = FL+FR+SL+SR
		5.0            = FL+FR+FC+BL+BR
		5.0(side)      = FL+FR+FC+SL+SR
		5.1            = FL+FR+FC+LFE+BL+BR（5.1chサラウンド）
		5.1(side)      = FL+FR+FC+LFE+SL+SR
		5.1+downmix    = FL+FR+FC+LFE+BL+BR+DL+DR
		6              = 5.1指定と同様
		6.0            = FL+FR+FC+BC+SL+SR
		6.0(front)     = FL+FR+FLC+FRC+SL+SR
		hexagonal      = FL+FR+FC+BL+BR+BC
		6.1            = FL+FR+FC+LFE+BC+SL+SR
		6.1(front)     = FL+FR+LFE+FLC+FRC+SL+SR
		7              = 6.1指定と同様
		7.0            = FL+FR+FC+BL+BR+SL+SR
		7.0(front)     = FL+FR+FC+FLC+FRC+SL+SR
		7.1            = FL+FR+FC+LFE+BL+BR+SL+SR
		7.1(wide)      = FL+FR+FC+LFE+BL+BR+FLC+FRC
		7.1(wide-side) = FL+FR+FC+LFE+FLC+FRC+SL+SR
		7.1+downmix    = FL+FR+FC+LFE+BL+BR+SL+SR+DL+DR
		8              = 7.1指定と同様
		octagonal      = FL+FR+FC+BL+BR+BC+SL+SR
		downmix        = DL+DR（stereoへのダウンミックス）
		
		例)
		layout="5.1"			# layout="FL+FR+FC+LFE+BL+BR" 指定と同様
		layout="7.1(wide)"		# layout="FL+FR+FC+LFE+BL+BR+FLC+FRC" 指定と同様



---------------------------------------------------------------------------------------------------

■Libav/ffmpeg がサポートするコンテナ及び映像コーデックの読み込み

LWLibavVideoSource("source file", cache, stream_index, threads, seek_threshold, seek_mode, dr, dominance)

	"source file"
		読み込む映像ファイルを指定します。

	cache
		映像ストリームを解析してインデックスファイル（拡張子 lwi）を生成します。
		インデックスファイルを生成しておくと、編集時のシーク等が快適になります。
		インデックスファイルは AviUtl の Libav-SMASH File Reader が生成するものと相互に互換性があります。
		=true    インデックスファイルを生成します（デフォルト）
		=false   インデックスファイルを生成しません

	stream_index
		映像ストリームのインデックスナンバーを指定して読み込みます。
		複数のストリームが格納されているコンテナから任意の映像をデコードする際に指定しましょう。
		=-1   自動判定（デフォルト）
		=n    任意のインデックスナンバー(n)に対応する映像ストリームを読み込みます

		インデックスファイルの仕様についてはこちら http://pop.4-bit.jp/?p=5474 を参考にしてください。
		（現在は拡張子が lwi に変更され、インデックスファイルのフォーマットは ver.11）

	threads
		処理するスレッド数を指定します。
		=0    自動判定（推奨）
		=n    任意のスレッド数(n)を指定して処理します

	seek_threshold
		時間軸の未来方向にランダムアクセス（シーク）したフレーム間隔が設定範囲内であれば、
		キャッシュされているフレームから即デコードをして余分な処理を省きます。
		範囲を広げすぎるとIピクチャからデコードした方が速く、むしろ遅くなるケースが
		あるため、程々に設定するほうが良いでしょう。
		編集時など、ランダムなシークが要求されるシーンで役立つ可能性があります。
		=10  デフォルト（推奨値）
		=n   seek_thresholdを有効化するフレーム数(n)を指定します

	seek_mode
		シーク時の処理方法を指定します。
		=0    Normalモード。3回目のシーク失敗時にUnsafeモードで3回目と同じフレームから
	          デコードを試行し、それでも駄目な場合は前のフレームのコピーを生成します（推奨）
		=1    Unsafeモード。1回目のエラーで前のフレームのコピーを生成します
		=2    Aggressiveモード。シーク失敗（エラー）で再試行を一切しません。簡易確認向け。

	dr
		Libav/ffmpeg(libavcodec)のcustom get_buffer()を使用したダイレクト読み込みをします。
		dr を使用しない場合と比較して約50%前後のスピードアップを実現（muken氏談）。
		ただし、インタレース映像で縦32の倍数デコードをそのまま、
		H.264の場合は縦2ラインが付加されるため、
		ストリームが最終的に表示すべき解像度にする場合はcrop処理を必要とするケースがあります。
		
		例えば、1080i の MPEG-2 ストリームは縦1088でダイレクトにデコード・表示されるため、
		下8ラインをcropして1080にするといった具合です。
		
		=true    ダイレクト読み込みを有効化します
		=false   ダイレクト読み込みを無効化します（デフォルト。従来の処理と同じ）

	repeat
		映像ストリームにRFF(Repeat First Field)フラグがある場合、それを有効化します。
		
		23.976PsF、29.97PsFといったプログレッシブベースのRFF付きストリームを指定された
		フラグに従ってプルダウン出力します（例えば、出力先がテレビを想定しているストリームは59.94iへプルダウン出力）。
		プルダウン時のフィールド順は後述の dominance で指定。
		
		純粋なプログレッシブストリームに対して有効化すると2:1インタレース出力となります(1フレームが2フィールド扱いになる)。
		
		=true    機能を有効化します
		=false   機能を無効化します

	dominance
		上記 repeat 有効時に機能し、プルダウン処理のフィールド順を指定します。
		今のところ、ffmpeg の libavcodec が TFF フラグの結果（表示順）を渡してくれないため、
		現状では TFF か BFF を指定する仕様となっています。

		=0    Obey source flags ソース映像のフラグに従い設定します(デフォルト)
		=1    TFF(Top Field First)としてフィールド処理を行います
		=2    BFF(Bottom Field First)としてフィールド処理を行います



■Libav/ffmpeg がサポートするコンテナ及び音声の読み込み

LWLibavAudioSource("source file", cache, stream_index, av_sync, layout)

	"source file"
		読み込む映像ファイルを指定します。

	cache
		ストリームを解析してインデックスファイル（拡張子 lwi）を生成します。
		インデックスファイルを生成しておくと、編集時のシーク等が快適になります。
		インデックスファイルは AviUtl の Libav-SMASH File Reader が生成するものと
		互換性があるため、AviSynth・AviUtl 互いの環境で利用できます。
		=true    インデックスファイルを生成します（デフォルト）
		=false   インデックスファイルを生成しません

	stream_index
		音声ストリームのインデックスナンバーを指定して読み込みます。
		複数のストリームが格納されているコンテナから任意の音声をデコードする際に指定しましょう。
		=-1  自動判定（デフォルト）
		=n   任意のインデックスナンバー(n)に対応する音声ストリームを読み込みます

	av_sync
		LWLibavVideoSource読み込み時のインデックスファイル(またはファイルを生成せず
		内部的に生成したインデックス）で設定された映像ストリームと音声を同期させて、音ズレを防ぎます。
		ただし、映像・音声ともに Libav で読み込まれていることが同期条件となります。
		
		先頭フレームが音声の同期ポイントとなりますが、ffmpegを用いてMPEG系映像を表示する場合、
		先頭GOPのIピクチャ、またはデコードが保証されないBおよびPピクチャが先頭にある場合は最初のIピクチャで
		代替表示するため、ClosedGOPとOpenGOPでは表示ルールが若干異なります（いずれも音声は同期する）。
		* 当プラグインは ffmpeg を使用しています。

		Libav を用いている場合も先頭フレームが同期ポイントとなりますが、
		OpenGOP等のようにBピクチャ始まりであってもIピクチャで代替表示せず、壊れていても強制表示します。
		
		=true    インデックスファイルで指定されている映像ストリームと音声を同期します
		=false   音声を同期させません（デフォルト）

	layout
		音声チャネルのレイアウトを強制指定することができます。
		音声を意図したレイアウトで出力したいときに指定しましょう。
		
		= 引数は以下を参照（ダブルクォーテーションで括ること）
		
		FL  = フロント・レフト
		FR  = フロント・ライト
		FC  = フロント・センター
		LFE = 低域周波数エフェクト（0.1chの低音）
		BL  = バック（リア）・レフト
		BR  = バック（リア）・ライト
		FLC = フロント・レフトのセンター
		FRC = フロント・ライトのセンター
		BC  = バック（リア）・センター
		SL  = サイド・レフト
		SR  = サイド・ライト
		TC  = トップ・センター
		TFL = トップ・フロント・レフト
		TFC = トップ・フロント・センター
		TFR = トップ・フロント・ライト
		TBL = トップ・バック・レフト
		TBC = トップ・バック・センター
		TBR = トップ・バック・ライト
		DL  = ダウンミックス・レフト
		DR  = ダウンミックス・ライト
		
		例)
		layout="FL+FR+FC+LFE+BL+BR"		# 5.1chサラウンドの指定
		
		また、以下のようにシンプルな指定方法もあります。
		
		mono           = FC（モノラル）
		1              = mono 指定と同様
		stereo         = FL+FR（ステレオ）
		2              = stereo 指定と同様
		2.1            = FL+FR+LFE
		3.0            = FL+FR+FC
		3.1            = FL+FR+FC+LFE
		3.0(back)      = FL+FR+BC
		4.0            = FL+FR+FC+BC
		4.1            = FL+FR+FC+LFE+BC
		quad           = FL+FR+BL+BR
		quad(side)     = FL+FR+SL+SR
		5.0            = FL+FR+FC+BL+BR
		5.0(side)      = FL+FR+FC+SL+SR
		5.1            = FL+FR+FC+LFE+BL+BR（5.1chサラウンド）
		5.1(side)      = FL+FR+FC+LFE+SL+SR
		5.1+downmix    = FL+FR+FC+LFE+BL+BR+DL+DR
		6              = 5.1指定と同様
		6.0            = FL+FR+FC+BC+SL+SR
		6.0(front)     = FL+FR+FLC+FRC+SL+SR
		hexagonal      = FL+FR+FC+BL+BR+BC
		6.1            = FL+FR+FC+LFE+BC+SL+SR
		6.1(front)     = FL+FR+LFE+FLC+FRC+SL+SR
		7              = 6.1指定と同様
		7.0            = FL+FR+FC+BL+BR+SL+SR
		7.0(front)     = FL+FR+FC+FLC+FRC+SL+SR
		7.1            = FL+FR+FC+LFE+BL+BR+SL+SR
		7.1(wide)      = FL+FR+FC+LFE+BL+BR+FLC+FRC
		7.1(wide-side) = FL+FR+FC+LFE+FLC+FRC+SL+SR
		7.1+downmix    = FL+FR+FC+LFE+BL+BR+SL+SR+DL+DR
		8              = 7.1指定と同様
		octagonal      = FL+FR+FC+BL+BR+BC+SL+SR
		downmix        = DL+DR（stereoへのダウンミックス）
		
		例)
		layout="5.1"			# layout="FL+FR+FC+LFE+BL+BR" 指定と同様
		layout="7.1(wide)"		# layout="FL+FR+FC+LFE+BL+BR+FLC+FRC" 指定と同様



===================================================================================================

【LWLibavVideoSource 使用時の注意点】

LWLibavVideoSource で一部コンテナ(TS等)を読み込むとフレームレートが正しく取得できないケースが稀にあるため、
その場合は AssumeFPS で正確なフレームレートを再設定してください。

わからない場合はフレームレートを再指定すべきではありませんが、どうしても確認したい場合は
MediaInfo 等でフレームレートを調べるのも手です。

# MPEG系コーデックで先頭または最後のGOPが不完全であるケースで発生し易いですが、現在はほぼ改善されています


例)テレビベースである29.97(30000/1001)fpsの映像ストリーム

	V1 = LWLibavVideoSource("e:\video\hogehoge.ts")
	〜中略〜
	AssumeFPS(30000,1001)    # trimや逆3-2プルダウン前に指定する

または

	LWLibavVideoSource("e:\video\hogehoge.ts").AssumeFPS(30000,1001)



===================================================================================================

【avs書式例】

■MP4コンテナの映像のみ読み込む
	LSMASHVideoSource("e:\video\hogehoge.mp4", track=0, threads=0, seek_threshold=10, seek_mode=0)

■音声のみ読み込む
	LSMASHAudioSource("e:\video\hogehoge.m4a", track=0, skip_priming=true)

■映像と音声がmuxされた動画、または映像・音声が別々のストリームを読み込む
	例1)
	V1 = LSMASHVideoSource("e:\video\hogehoge.mp4", track=0, threads=0, seek_threshold=10, seek_mode=0)
	A1 = LSMASHAudioSource("e:\video\hogehoge.mp4", track=0, skip_priming=true)
	AudioDub(V1, A1)

	例2)
	V1 = LSMASHVideoSource("e:\video\hogehoge.mp4", track=0, threads=0, seek_threshold=10, seek_mode=0)
	A1 = LSMASHAudioSource("e:\video\hogehoge.m4a", track=0, skip_priming=true)
	AudioDub(V1, A1)

■Libav/ffmpeg 対応の動画を音声同期で読み込む
	V1 = LWLibavVideoSource("e:\video\hogehoge.ts", cache=true, stream_index=-1, threads=0).AssumeFPS(30000,1001)
	A1 = LWLibavAudioSource("e:\video\hogehoge.ts", av_sync=true)
	AudioDub(V1, A1)



===================================================================================================
【リポジトリ】
	VFR-maniac/L-SMASH Works
	https://github.com/VFR-maniac/L-SMASH-Works
	git://github.com/VFR-maniac/L-SMASH-Works.git
===================================================================================================
【ビルドした人】
	POP
	POP@4bit http://pop.4-bit.jp/
===================================================================================================

【更新履歴】
2013/11/03	L-SMASH Works r694	git-0eb40a4		# L-SMASH r787(git-5d903e5)	# ffmpeg-8a701ef
			r694 lwindex: The maximum max_num_reorder_pics is equal to 15 for HEVC ver.1.
			r692 lwindex: Generate PTSs from POCs for HEVC stream if incomplete.
			r690 lwindex: Construct frame from pair of field coded picture automatically if any.

2013/10/23	L-SMASH Works r688	git-8574051		# L-SMASH r781(git-1414f24)	# ffmpeg-610a8b1
			r688 lwindex: Fix a C++ compilation.
			r687 lwindex: Fix PTS generation when starting from non-IDR with negative POC.
			r686 lwindex: Check leading pictures when PTS generation from POCs.
			r685 lwindex: Fix timestamp sortings for PTS generation from POCs.
			r684 lwindex: Generate PTSs from POCs for H.264 stream if incomplete.
			r680 common/resample: Cosmetics.

2013/08/23	L-SMASH Works r679	git-ada6e36		# L-SMASH_r749	ffmpeg-2baa12f
			r679 lsmashsource: Make {sse2|avx2}_available constant value.
			r678 lsmashsource: Add untested AVX(2) intrinsics for stacked format.
			r677 lsmashsource: Make VC10 project file compatible with VC11.
				 v110_xp is specified by default.
			r676 lsmashsource: Add Visual C++ 2010 project file.
			r675 lsmashsource: Add Visual C++ 2010 solution file.
				 Note: for msinttypes, r28 or later is required.
			r674 lsmashsource: Change saturation protector handling.
				 Avoid SSE2 instruction when SSE2 is not available.
			r673 lsmashsource: More speed gain with SSE2 for stacked format.
			r672 lsmashsource: Copy data by rowsize not linesize for stacked format.
			r671 lsmashsource: Check if SSE2 is available.
			r670 lwsimd: Add 'lw_' prefix to SIMD checker functions.
			r669 Move lwsimd.c/h into common directory.
			r668 lsmashsource: Use SSE2 intrinsics for stacked planar YUV formats.
			r662 avs_input: Forgot to support RGB48 input.

2013/08/02	L-SMASH Works r661	git-8f1f366		# L-SMASH_r749	ffmpeg-9408d99

2013/08/01	L-SMASH Works r659	git-351542e		# L-SMASH_r748	ffmpeg-69fe25c
			r646 lsmashsource: YUV range is supposed to be detected properly now.
			r644 common/video_output: YUV range is supposed to be detected properly at init.
			r632 libavsmash: Always try to set bits_per_coded_sample from summary for video stream.

2013/06/21	L-SMASH Works r629	git-b36c56a		# L-SMASH_r747	ffmpeg-c605adb

2013/06/16	L-SMASH Works r620	git-fdaff9c		# L-SMASH_r746	ffmpeg-1163910
			r612 libavsmash: Avoid NULL dereference by sample description index.
			r611 libavsmash: Set up the maximum presentation size even if no update of decoder configuration.
				 Fix a regression in b376363(r585).
			r610 libavsmash: Support ULH0 and ULH2 formats.
			r609 lsmashsource: Deallocate a string or binary iTunes metadata decently.
			r608 lsmashsource: Support output of some little endianness 12 and 14 bit YUV formats.
				 Available only when ffmpeg libavutil and swscale are linked.
			r607 lsmashsource: Fix typo in LSMASH*Source.
				 Fix direct rendering won't be enabled.
				 Stacked format was enabled instead.
			r606 lsmashsource: Add "YUY2" to the list of "format".
			r605 lsmashsource: Map BGR24/RGB24 (input) to BGR24 (output).
				 Add "RGB24" to the list of 'format'.
			r604 lsmashsource: Add 'format' option to force output pixel format.
				 Currently, the following formats are supported.
				  YUV420P8
				  YUV422P8
				  YUV444P8
				  YUV410P8
				  YUV411P8
				  YUV420P9
				  YUV422P9
				  YUV444P9
				  YUV420P10
				  YUV422P10
				  YUV444P10
				  YUV420P16
				  YUV422P16
				  YUV444P16
			r603 lsmashsource: Add 'stacked' option to output as stacked format for high bit-depth.

2013/05/28	L-SMASH Works r602	git-0228d6e		# L-SMASH_r732	ffmpeg-d4a4661
			r602 common/video_output: Set SWS_BITEXACT for more accurate YUV->RGB conversion.
			r601 lsmashsource: Support 8bit gray-scale (planar YUV 4:0:0).
			r600 lsmashsource: Support planar YUV 4:1:0 and 4:1:1.
				 Available under Avisynth 2.6 or later.
			r599 lsmashsource: Support planar YUV4:4:4 high bit-depth (9,10,16) by MSB/LSB interleaved fake.
				 This feature requires AviSynth 2.6 or later.
			r598 lsmashsource: Support planar YUV 4:4:4 (YV24).
				 Available under Avisynth 2.6 or later.
			r597 lsmashsource: Support planar YUV4:2:2 high bit-depth (9,10,16) by MSB/LSB interleaved fake.
				 This feature requires AviSynth 2.6 or later.
			r596 lsmashsource: Add more colorformats to the header.
				 These are available under AviSynth 2.6 or later.
			r595 lsmashsource: Support direct rendering for planar YUV4:2:0 high bit-depth (9,10,16).
			r594 lsmashsource: Support planar YUV4:2:0 high bit-depth (9,10,16) by MSB/LSB interleaved fake.

2013/05/25	L-SMASH Works r593	git-2dfd13a		# L-SMASH_r732	ffmpeg-036e9a0
			r593 lsmashsource: LWLibavVideoSource() supports getting the parity of each frame.
			r592 README: Update for the previous commit.
			r591 lwlibav: Determine field dominance by flags in source file.
			r590 README: Fix descriptions of seek threshold.
			
2013/05/11	L-SMASH Works r589	git-a39b327		# L-SMASH_r728	ffmpeg-fbaf75b
			r589 lwlibav: Define flags for video frames instead of 'keyframe' and 'is_leading' field.
			r588 lsmashsource: Use AVCodecContext.{width|height} instead of AVFrame.{width|height} for output.
			r586 lwlibav: Don't exceed the maximum presentation size specified for each sequence.
			r585 libavsmash: Don't exceed the maximum presentation size specified for each sequence.
			r584 lwinput: Use AVCodecContext.{width, height} instead of AVFrame.{width|height} for output.
			r583 lwlibav: Generate pseudo-DTS if a raw demuxer doesn't return DTS for each frame.
			r582 lwlibav: Fix a condition which decides seek correction by file offset.
			r581 lwlibav: Use DTS for the average framerate calculation if the format contains AVFMT_TS_DISCONT.
				 Get the average framerate from libavformat if a raw demuxer is used.
			r580 lwindex: Fix that any execution of getting audio frame length by the parser was not carried out.
				 This is a regression in c536077(r539).
			r579 lwindex: Use file offset for the progress indicator if available.
			r578 lwlibav: Absence of AVIndexEntry doesn't always make file offset based seek.
				 Fix a regression in 4fe6450(r576).
			r577 lwlibav: Use file offset based seek if a raw demuxer is used.
			r576 lwlibav: Use file offset based seek if AVIndexEntry is absent.
			r575 lwlibav: Avoid decoding video frames until the seek correction caused by too backward is done.

2013/05/01	L-SMASH Works r574	git-172abb5		# L-SMASH_r728	ffmpeg-fbaf75b
			r574 lwlibav: Consider second field decoding for forward seek threshold.
			r572 lwlibav: Improve handling of PAFF field coded pictures.
			r570 README: Correct the documentation of channel layout.
			r567 AviSynth: Add a README.
			r561 lwinput: Display libav/ffmpeg library version and license.
			r560 lwlibav: Fix finding the first valid video frame when it will be output by feeding null packets.
				 This is a regression in 458cb1a(r541).

2013/04/18	L-SMASH Works r559	git-2fa9b5a		# L-SMASH_r719	ffmpeg-b6408ff

2013/04/13	L-SMASH Works r554	git-69a5c77		# L-SMASH_r719	ffmpeg-a47288f
			r554 lwlibav: Avoid copying field data from the same frame buffer twice.
			r553 lsmashsource: Add 'dominance' option to specify field dominance.
					1: Top -> Bottom
					2: Bottom -> Top
			r552 vslsmas: Add 'dominance' option to specify field dominance.
					1: Top -> Bottom
					2: Bottom -> Top
			r549 lwlibav: Support repeat flags.
				 Original patch by Masaki Tanaka <maki.rxrz@gmail.com>.
			r548 lwlibav: Always treat repeat_pict as field level.
			r546 lwlibav: Don't split extradata from pkt->data of H.264 stream without start codes.
			r545 lwlibav: More robust check if converting 14496-15 format into H.264 byte stream format is needed.
			r544 lwlibav: Fix listing extradata of H.264 stream in some file formats.
			r543 lwlibav: Fix seeking around last frames.
				 This is a regression in 458cb1a(r541).
			r542 lwlibav: Fix parsing H.264 stream in some file formats.
				 This is a regression in c536077(r539).
			r541 lwlibav: Handle PAFF field coded pictures.

2013/04/06	L-SMASH Works r540	git-46edc1a		# L-SMASH_r719	ffmpeg-2b26077
			r540 lwlibav: Remove unnecessary code to get extradata in a side data.
			r539 lwlibav: Always set up the parser externally.
				 We don't trust parameters returned by the internal parser.
			r538 vslsmas: Forgot to free background frame.
			r537 lsmashsource: Fix freeing the private output handler.
				 This is a regression in 66345ef(r526).
			r536 common: Move the first video frame buffer to the video decode handlers.
			r535 common: Use refcounted_frames for the first valid video frame.
				 Now, video hanlders always uses refcounted_frames.
			r534 lwlibav: Fix current video frame number correction.
			r533 utils: Include cpp_compat.h.
			r532 common: Integrate the codes of cleaning up audio output handler.
			r531 libavsmash: Integrate the codes of cleaning up audio decode handler.
			r530 libavsmash: Integrate the codes of cleaning up video decode handler.
			r529 lwlibav: Don't return negative value when getting picture type unless failing memory allocation.
			r528 lwlibav: Don't write fixed frame properties through format specifiers.
			r526 common: Integrate the codes of cleaning up video output handler.
			r525 lwlibav: Move the codes of importing AVIndexEntrys as common.
			r524 libavsmash: typedef libavsmash_video_{output, scaler}_handler_t in the common header.
			r523 lwlibav: typedef lwlibav_video_{output, scaler}_handler_t in the common header.

2013/03/30	L-SMASH Works r522	git-7125a31		# L-SMASH_r718	ffmpeg-76fdced
			r522 lwlibav: Fix parsing WMV3 in ASF.
			r521 lwlibav: Improve VC-1/WMV3 in ASF handling. …
				 Fix PTS generation when any B-picture or BI-picture are present.
			r519 configure: Fix permissions.
			r518 lwlibav: Fix average displayed framerate caluclation when PTSs are generated.
			r511 lwlibav: Do pre-rolling if audio frame has lossy property.
			r510 exlibs: Move libmingwex.a from MSVC project to.
			r509 lsmashsource: Add 'rate' option to specify output audio sample rate.
			r507 resample: Remove unused field.
			r506 lwlibav: Add file offset correction for video seek which is available if no invalid file offset.

2013/03/21	L-SMASH Works r505	git-266e7da		# L-SMASH_r718	ffmpeg-76fdced
			r505 lwlibav: Don't assume frames which has PTS == DTS as B-picture during PTS generation.
				 The assumption might have considered all frames as B-picture when there is no B-picture.
			r504 libavsmash: Integrate common finder of the first valid frame.
			r503 lwlibav: Integrate common finder of the first valid frame.
			r501 lsmashinput: Initialize get_buffer() of the decoder configuration handler by defalut get_buffer().
				 Fix a crash when LW-Libav reader is used and there is extradata change.

2013/03/19	L-SMASH Works r500	git-8c45fee		# L-SMASH_r717	ffmpeg-17c1881
			r500 common: Fix presentation resolution when disabling direct rendering.
			r499 common: Add the log handler.
			r498 libavsmash: Initialize defalut get_buffer() of the decoder configuration hanlder.
				 Fix a crash of lsmashinput.aui when Libav+L-SMASH reader is used.
			r497 lwlibav: Fix a crash when the index helper opened own parsar.
			r496 common: Fix a crash of direct rendering when changing decoder configuration.
			r494 lsmashsource: Use get_buffer2() instead of deprecated get_buffer().
			r493 lsmashsource: Fix a compilation with the latest ffmpeg.
			r492 common: Set AV_CODEC_ID_NONE to AVCodecContext.codec_id before avcodec_open2().
					AVCodecContext.codec_id is supposed to be set properly in avcodec_open2().
					This avoids avcodec_open2() failure by the difference of enum AVCodecID.
					For instance, when stream is encoded as AC-3,
					AVCodecContext.codec_id might have been set to AV_CODEC_ID_EAC3
					while AVCodec.id is set to AV_CODEC_ID_AC3.

2013/03/19	L-SMASH Works r491	git-d08ad46		# L-SMASH_r717	ffmpeg-9c22039
			r491 lwlibav: Fix a C++ compilation with ffmpeg.
				 There is incompatibility of pointer data type.
			r490 lwlibav: Mark only I-picture as a keyframe in VC-1/WMV3 stream.
			r489 lwlibav: Fix PTS based seek when PTSs are generated.
			r488 lwlibav: Fix MPEG-1/2 Video picture type by actual decoding.
				 Also fix audio decoding was always used for getting audio frame length.
			r487 lwlibav: Fix pict_type when there is decoder delay.
			r486 lwlibav: Use index helper to get audio frame length.
			r485 lwlibav: Retry seek when the first decoding after seek failed.
			r484 lwlibav: Shift the current audio frame number in order to match file offset/PTS/DTS.
			r483 lwlibav: Generate PTS only when there is any invalid PTS and all DTS are valid.
			r482 lwlibav: Add NULL dereference check for the index helpers.
				 The helpers are not allocated for non-Audio/Visual streams.
			r481 lwlibav: Shift the current frame number in order to match DTS.
			r480 lwlibav: Decode to get picture type when indexing ASF.
			r479 lwlibav: Forgot to write pict_type from the own parser into lwi file.
			r478 lwlibav: Make an effort to get picture type.
			r477 lwlibav: Also add VC-1/WMV3 PTS generator.
			r476 lwlibav: Add PTS generator for MPEG-1/2 Video.
			r475 lwlibav: Update decoder configuration out-of-bandly.
				 All extradata is now written in lwi file.

2013/03/09	L-SMASH Works r474	git-0fa169f		# L-SMASH_r717	ffmpeg-d30ee5e
			r474 lwlibav: Fix compilation with the latest libavcodec LIBAVFORMAT_VERSION_MAJOR=55.
			r473 lsmashsource: Integrate common audio rendering preparation.
			r472 lsmashsource: Integrate common video rendering preparation.
			r468 lwlibav: Fix a comment in 5a8c5b3(r466).
			r466 lwlibav: Don't treat IDR-frame as a keyframe if not immediately preceded by corresponding SPS and PPS.
			r464 lsmashsource: Don't show any libav/ffmpeg's logs in Release builds.
			r462 resample: Remove redundant codes to flush buffers.
			r459 lsmashsource: Add 'dr' option to LSMASHVideoSource().
			r458 lsmashsource: Fix BGRA direct rendering.
			r454 lsmashsource: Add 'layout' option.
				 This option forces output channel layout.
				 Note: you can't set up mixing configuration by this.
				 
				 A format of the argument is like the following.
				   layout="FL+FR+FC": front left + front right + front center
				 Also users can specify the same layout as the above as follows.
				   layout="3.0"
				 See libavutil/channel_layout.c/h for more detail.
			r453 Set the {YUV to RGB} coefficients if specified in stream.
				 Bump the version of LW-Libav index file to 6.

2013/02/20	L-SMASH Works r451	git-9cf3488		# L-SMASH_r717	ffmpeg-1acd7d5
			r450 lwlibav: Remove redundant variable caused by the previous commit.
			r449 lwlibav: Fix regressions in b79372b(r433).
				 Should be fixed to display uncompressed video data through sws_scale() from avcodec_decode_video2().
				 Should be fixed to get PCM audio samples over audio frames.
			r444 lsmashsource: Fix comment about convert_av_pixel_format().
				 Now, This source filter always uses lines aligned to an address dividable by 32.

2013/02/16	L-SMASH Works r443	git-2a11f86		# L-SMASH_r717	ffmpeg-b9c5448
			r443 lsmashsource: More robust check for availability of direct rendering.
			r442 lsmashsource: Add 'dr' option to LWLibavVideoSource().
				 If 'dr' is set to true, direct rendering will be enabled.
			r438 lwlibav: Simplify frame reading slightly.
			r437 lwlibav: Fix a regression in b79372b(r432).
				 The number of decoder delay was not counted correctly when finding the first valid video frame.
			r435 lsmashsource: Set true to 'cache' as default value.

2013/02/13	L-SMASH Works r434	git-13412a3		# L-SMASH_r717	ffmpeg-1ecce26
			r434 vslsmas: Set -1 (auto) to 'stream_index' default value.
			r432 lwlibav: Remove packet input buffer.
			r431 lsmashinput: Change MAX_AUTO_NUM_THREADS. Now, defined as 16.
				 According to the latest libavcodec/pthread.c,
				 H264 slice threading seems to be buggy with more than 16 threads.
			r430 Add apropriate prefix to some data types.
			r429 lsmashsource: Don't write black background when input resolution equals output resolution.
			r428 lsmashsource: Fix 10L in b3cf6e9(r425). If the first frame was invalid, might have caused a crash.
			r427 lsmashsource: Fix include file for linking with ffmpeg.
			r426 lsmashsource: Use sws_scale() instead of env->BitBlt even if there is no pixel format conversion.

2013/02/12	L-SMASH Works r425	git-30c8e9f		# L-SMASH_r717	ffmpeg-7ff1a4b
			r425 lsmashsource: Avoid calling scaler if not needed.
			r424 lsmashsource: Add 'av_sync' option to LWLibavAudioSource().
				 If true, activate AV synchronization against the active video stream in the same index file.
				 Note: its default value is false.
			r423 Integrate audio output handler partially.

2013/02/10	L-SMASH Works r422	git-2e698d9		# L-SMASH_r717	ffmpeg-969039e
			r422 Integrate video output handler.
			r421 lwlibav: Fix 10L in 3bde4e9(r419). 
			r420 lsmashsource: Fix .lwi file generation option.
			r419 lsmashsource: Fix some memory leaks in LW-Libav reader.
			r417 lsmashsource: For LWLibavSource, rename 'track' into 'stream_index'.
			r416 lsmashsource: Add LWLibavVideoSource() and LWLibavAudioSource().
			r415 Move common basic functions into common/utils.c/h.
			r413 lsmashsource: Split some codes into files.

2013/02/04	L-SMASH Works r409	git-7234ba3		# L-SMASH_r715	ffmpeg-b5f544a
			r409 libavsmash: Fix implicit declaration of function 'av_realloc' for libav.
			r408 libavsmash: Support '2vuy' and 'yuv2'.

2013/01/31	L-SMASH Works r407	git-6f15f74		# L-SMASH_r712	ffmpeg-cdf0877
			r402 Integrate Libav-SMASH video decode handler and moved into common directory.
			r401 Integrate Libav-SMASH audio decode/output handler and moved into common directory.
			r400 Integrate resampler functions and moved into common directory.
			r399 lsmashsource: Cosmetics about audio handler.
			r396 Move libavsmash.c/h into common directory.
				 libavsmash.c is expected that it is usable for both C and C++.

2013/01/15	L-SMASH Works r395	git-94a573c		# L-SMASH_r712	ffmpeg-92e79e5
			r394 lsmashsource: Add null pointer check on extended_data.
			r390 lsmashsource: Use av_image_alloc to simplify the codes of frame maker.

2013/01/09	L-SMASH Works r380	git-e04f0b3		# L-SMASH_r712	ffmpeg-79013a5
			r375 lsmashsource: Rename directory name: Avisynth -> AviSynth.
			r370 lsmashsource: Fix typo of data type.
			r369 lsmashsource: Remove inappropriate comments about licenses.
			r368 lsmashsource: Support change of video resolution.

2012/12/06	L-SMASH Works r366	git-fad0ccf		# L-SMASH_r706	ffmpeg-09456d0

2012/11/14	L-SMASH Works r365	git-ddbe843		# L-SMASH_r704	ffmpeg-b616588
			r365 lsmashsource: Update for the latest L-SMASH.

2012/10/20	L-SMASH Works r358	git-d224fbb		# L-SMASH_r696	ffmpeg-04bf2e7
			r358 lsmashsource: Improve Open-GOP seek handling.
				 Some decoders return -1 when feeding a leading sample.
				 We don't consider as an error if the return value -1 is 
				 caused by a leading sample since it is not fatal at all.

2012/10/16	L-SMASH Works r355	git-8e93e57		# L-SMASH_r695	ffmpeg-36b3b23
			r355 lsmashinput: Fix a memoryleak of back ground frame.

2012/10/15	L-SMASH Works r354	git-408525a		# L-SMASH_r695	ffmpeg-b08273c
			r354 libavsmash: Avoid setting AV_SAMPLE_FMT_NONE to sample format as much as possible.

