use Test::More tests => 56;
use FFmpeg;
use Data::Dumper;
my $fname = "eg/t1.avi";
ok($ff = FFmpeg->new(input_file => $fname) , 'ff object created successfully');
ok($ff->isa('FFmpeg') , 'object correct type');
ok($sg = $ff->create_streamgroup , 'streamgroup object created successfully');
ok($sg->isa('FFmpeg::StreamGroup') , 'object correct type');
like($sg->duration, qr/^29/, , 'object correct type'); #used to use header value. now uses some combo of filesize and bitrate, it seems. FIXME steal some code from Video::Info and use the data_offset attribute to get the intended length from a file frag.
is(scalar($sg->streams), 2 , 'stream count correct');
is(scalar(grep {$_->isa('FFmpeg::Stream::Video')} $sg->streams), 1, 'video stream count correct');
is(scalar(grep {$_->isa('FFmpeg::Stream::Audio')} $sg->streams), 1, 'audio stream count correct');
ok($sg->has_audio , 'audio detected ok');
ok($sg->has_video , 'video detected ok');
ok(my $v0 = ($sg->streams)[0] , 'got stream 0');
is($v0->isa('FFmpeg::Stream::Video'), 1, , 'stream 0 is video');
is($v0->width, 240, , 'stream 0 width ok');
is($v0->height, 180, , 'stream 0 height ok');
is($v0->quality, 0, , 'stream 0 quality is 0');
like($v0->duration, qr/^0/, , 'stream 0 duration is 35usec');
is(int($v0->video_rate), 12 , 'stream 0 frame rate ok');
ok(my $v1 = ($sg->streams)[1] , 'got stream 1');
is($v1->isa('FFmpeg::Stream::Audio'), 1, , 'stream 1 is audio');
is($v1->sample_rate, 22050, , 'stream 1 sample rate is 22050');
is($v1->bit_rate, 89240, , 'stream 1 bit rate is 89240');
is($v1->channels, 1, , 'stream 1 channels is 1');
is($sg->album, '' , 'streamgroup album ok');
is($sg->author, '' , 'streamgroup author ok');
is($sg->bit_rate, 51884 , 'streamgroup bit_rate ok');
is($sg->comment, '' , 'streamgroup comment ok');
is($sg->copyright, '' , 'streamgroup copyright ok');
is($sg->data_offset, 2048 , 'streamgroup data_offset ok');
is($sg->file_size, 188443 , 'streamgroup file_size ok');
is($sg->format->name, 'avi' , 'streamgroup format ok');
is($sg->genre, '' , 'streamgroup genre ok');
is($sg->track, 0 , 'streamgroup track ok');
is($sg->url, $fname , 'streamgroup url ok');
is($sg->year, 0 , 'streamgroup year ok');
#warn Dumper($sg);
$fname = "eg/t2.avi";
ok(my $ff = FFmpeg->new(input_file => $fname) , 'ff object created successfully');
ok($ff->isa('FFmpeg') , 'object correct type');
ok(my $sg = $ff->create_streamgroup , 'streamgroup object created successfully');
ok($sg->isa('FFmpeg::StreamGroup') , 'object correct type');
like($sg->duration, qr/^1231/ , 'streamgroup duration correct');
is(scalar($sg->streams), 2 , 'stream count correct');
is(scalar(grep {$_->isa('FFmpeg::Stream::Video')} $sg->streams), 1, 'video stream count correct');
is(scalar(grep {$_->isa('FFmpeg::Stream::Audio')} $sg->streams), 1, 'audio stream count correct');
ok($sg->has_audio , 'audio detected ok');
ok($sg->has_video , 'video detected ok');
is($sg->album, '' , 'streamgroup album ok');
is($sg->author, '' , 'streamgroup author ok');
is($sg->bit_rate, 168 , 'streamgroup bit_rate ok');
is($sg->comment, '' , 'streamgroup comment ok');
is($sg->copyright, '' , 'streamgroup copyright ok');
is($sg->data_offset, 2060 , 'streamgroup data_offset ok');
is($sg->file_size, 25986 , 'streamgroup file_size ok');
is($sg->format->name, 'avi' , 'streamgroup format ok');
is($sg->genre, '' , 'streamgroup genre ok');
is($sg->track, 0 , 'streamgroup track ok');
is($sg->url, $fname , 'streamgroup url ok');
is($sg->year, 0 , 'streamgroup year ok');