package MediaServe::Audio::Converter::Wav;
use strict;
use warnings;

use File::Basename;
use Audio::FLAC;

use lib '/app/tools/common/lib';
use Common::RSApp;
use Common::Util;
use Common::Assert;

use lib '/app/tools/mediaserve/lib';

use base 'MediaServe::Audio::Converter';

use constant FLAC => Common::RSApp::GetConfig( 'distribution', 'encoders_windows_wav' );

sub Extension { 'wav' }

sub write {
    my $self = shift;
    my $dest = shift;

    assert($dest);

    Common::Log::Debug("Converting $self->{_filename} => $dest");

    my $cmd = FLAC . " -f -d -o \"$dest\" \"$self->{_filename}\"";
    Common::Log::Debug("   - CMD: $cmd");

    my $status = system($cmd);
    Common::Log::Debug("Exit Status: $status");

    my $good = defined($status) && $status == 0 ? 1 : undef;

    my @stat = stat($dest) if ($dest);

    unless ( $good && -r $dest && $stat[7] ) {
        my $error = "Failed to convert file to $dest\n";
        print STDERR $error;
        return;
    }

    return 1;
}

1;
