Initial import of CVS-v2_8_branch

This commit is contained in:
Fred Gleason
2014-08-12 15:13:02 -04:00
commit afd67c7af8
1508 changed files with 405304 additions and 0 deletions

72
utils/rdchunk/Makefile.am Normal file
View File

@@ -0,0 +1,72 @@
## automake.am
##
## Automake.am for rivendell/utils/rdchunk
##
## (C) Copyright 2002-2006 Fred Gleason <fredg@paravelsystems.com>
##
## $Id: Makefile.am,v 1.5.8.1 2012/11/29 01:37:37 cvs Exp $
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License version 2 as
## published by the Free Software Foundation.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public
## License along with this program; if not, write to the Free Software
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
##
## Use automake to process this into a Makefile.in
AM_CPPFLAGS = -Wall -DPREFIX=\"$(prefix)\" -DQTDIR=\"@QT_DIR@\" @QT_CXXFLAGS@
INCLUDES = -I$(top_srcdir)/lib
LIBS = @QT_LIBS@ -L$(top_srcdir)/lib
MOC = @QT_MOC@
# The dependency for qt's Meta Object Compiler (moc)
moc_%.cpp: %.h
$(MOC) $< -o $@
# I18N Stuff
install-exec-local:
mkdir -p $(DESTDIR)$(prefix)/share/rivendell
cp rdchunk_*.qm $(DESTDIR)$(prefix)/share/rivendell
uninstall:
rm -f $(DESTDIR)$(prefix)/share/rivendell/rdchunk_*.qm
all:
@QT_BIN@/lupdate rdchunk.pro
@QT_BIN@/lrelease rdchunk.pro
bin_PROGRAMS = rdchunk
dist_rdchunk_SOURCES = rdchunk.cpp rdchunk.h
nodist_rdchunk_SOURCES = moc_rdchunk.cpp
rdchunk_LDADD = @LIB_RDLIBS@ @LIBVORBIS@
EXTRA_DIST = rdchunk.pro\
rdchunk_de.ts\
rdchunk_es.ts\
rdchunk_fr.ts\
rdchunk_pt_BR.ts
CLEANFILES = *~\
*.idb\
*ilk\
*.obj\
*.pdb\
*.qm\
moc_*
MAINTAINERCLEANFILES = *~\
*.tar.gz\
aclocal.m4\
configure\
Makefile.in\
moc_*

745
utils/rdchunk/rdchunk.cpp Normal file
View File

@@ -0,0 +1,745 @@
// rdchunk.cpp
//
// A Qt-based application for playing Microsoft WAV files.
//
// (C) Copyright 2002-2004 Fred Gleason <fredg@paravelsystems.com>
//
// $Id: rdchunk.cpp,v 1.3.8.3 2014/01/21 21:59:33 cvs Exp $
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
// published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public
// License along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
#include <qapplication.h>
#include <qwindowsstyle.h>
#include <qrect.h>
#include <qpoint.h>
#include <qpainter.h>
#include <qmessagebox.h>
#include <qlineedit.h>
#include <qlistbox.h>
#include <qfiledialog.h>
#include <qlabel.h>
#include <qtextcodec.h>
#include <qtranslator.h>
#include <unistd.h>
#include <stdio.h>
#include <signal.h>
#include <string.h>
#include <math.h>
#include <rd.h>
#include <rdconf.h>
#include <rdchunk.h>
MainWidget::MainWidget(QWidget *parent,const char *name)
:QWidget(parent,name)
{
y_chunk_button=40;
//
// Fix the Window Size
//
setMinimumWidth(sizeHint().width());
setMaximumWidth(sizeHint().width());
setMinimumHeight(sizeHint().height());
setMaximumHeight(sizeHint().height());
//
// Generate Fonts
//
QFont font("Helvetica",12,QFont::Normal);
font.setPixelSize(12);
QFont label_font("Helvetica",12,QFont::Bold);
label_font.setPixelSize(12);
wave_loaded=false;
wavefile=NULL;
fmt_button=NULL;
data_button=NULL;
fact_button=NULL;
cart_button=NULL;
bext_button=NULL;
mext_button=NULL;
wave_base="RDChunk";
setCaption(wave_base);
//
// Load Button
//
QPushButton *button=new QPushButton(tr("Load"),this,"load_button");
button->setGeometry(10,10,sizeHint().width()-20,30);
connect(button,SIGNAL(clicked()),this,SLOT(loadWaveFile()));
//
// Chunk Label
//
wave_chunk_label=new QLabel(tr("Chunks"),this,"wave_chunk_label");
wave_chunk_label->setGeometry(25,55,sizeHint().width()-50,20);
wave_chunk_label->setAlignment(AlignCenter);
wave_chunk_label->setFont(label_font);
wave_chunk_label->hide();
}
QSize MainWidget::sizeHint() const
{
return QSize(120,y_chunk_button+10);
}
QSizePolicy MainWidget::sizePolicy() const
{
return QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
}
void MainWidget::createChunkButtons()
{
int xptr=20;
int yptr=78;
//
// Create chunk buttons
//
if(wavefile->getFormatChunk()) {
fmt_button=new QPushButton(this,"fmt");
fmt_button->setText("Format");
fmt_button->setGeometry(xptr,yptr,80,25);
fmt_button->show();
yptr+=30;
connect(fmt_button,SIGNAL(clicked()),this,SLOT(displayFmt()));
}
if(wavefile->getDataChunk()) {
data_button=new QPushButton(this,"data");
data_button->setText("Data");
data_button->setGeometry(xptr,yptr,80,25);
data_button->show();
yptr+=30;
connect(data_button,SIGNAL(clicked()),this,SLOT(displayData()));
}
if(wavefile->getFactChunk()) {
fact_button=new QPushButton(this,"fact");
fact_button->setText("Fact");
fact_button->setGeometry(xptr,yptr,80,25);
fact_button->show();
yptr+=30;
connect(fact_button,SIGNAL(clicked()),this,SLOT(displayFact()));
}
if(wavefile->getCartChunk()) {
cart_button=new QPushButton(this,"cart");
cart_button->setText("Cart");
cart_button->setGeometry(xptr,yptr,80,25);
cart_button->show();
yptr+=30;
connect(cart_button,SIGNAL(clicked()),this,SLOT(displayCart()));
}
if(wavefile->getBextChunk()) {
bext_button=new QPushButton(this,"bext");
bext_button->setText("Bext");
bext_button->setGeometry(xptr,yptr,80,25);
bext_button->show();
yptr+=30;
connect(bext_button,SIGNAL(clicked()),this,SLOT(displayBext()));
}
if(wavefile->getMextChunk()) {
mext_button=new QPushButton(this,"mext");
mext_button->setText("Mext");
mext_button->setGeometry(xptr,yptr,80,25);
mext_button->show();
yptr+=30;
connect(mext_button,SIGNAL(clicked()),this,SLOT(displayMext()));
}
if(wavefile->getLevlChunk()) {
levl_button=new QPushButton(this,"levl");
levl_button->setText("Levl");
levl_button->setGeometry(xptr,yptr,80,25);
levl_button->show();
yptr+=30;
connect(levl_button,SIGNAL(clicked()),this,SLOT(displayLevl()));
}
if(wavefile->getAIR1Chunk()) {
AIR1_button=new QPushButton(this,"AIR1");
AIR1_button->setText("AIR1");
AIR1_button->setGeometry(xptr,yptr,80,25);
AIR1_button->show();
yptr+=30;
connect(AIR1_button,SIGNAL(clicked()),this,SLOT(displayAIR1()));
}
y_chunk_button=yptr;
wave_chunk_label->show();
setMinimumWidth(sizeHint().width());
setMaximumWidth(sizeHint().width());
setMinimumHeight(sizeHint().height());
setMaximumHeight(sizeHint().height());
setGeometry(geometry().x(),geometry().y(),sizeHint().width(),
sizeHint().height());
}
void MainWidget::destroyChunkButtons()
{
if(fmt_button!=NULL) {
fmt_button->hide();
delete fmt_button;
fmt_button=NULL;
}
if(data_button!=NULL) {
data_button->hide();
delete data_button;
data_button=NULL;
}
if(fact_button!=NULL) {
fact_button->hide();
delete fact_button;
fact_button=NULL;
}
if(cart_button!=NULL) {
cart_button->hide();
delete cart_button;
cart_button=NULL;
}
if(bext_button!=NULL) {
bext_button->hide();
delete bext_button;
bext_button=NULL;
}
if(mext_button!=NULL) {
mext_button->hide();
delete mext_button;
mext_button=NULL;
}
wave_chunk_label->hide();
y_chunk_button=40;
setMinimumWidth(sizeHint().width());
setMaximumWidth(sizeHint().width());
setMinimumHeight(sizeHint().height());
setMaximumHeight(sizeHint().height());
setGeometry(geometry().x(),geometry().y(),sizeHint().width(),
sizeHint().height());
}
void MainWidget::loadWaveFile()
{
QString str;
delete wavefile;
wavefile=NULL;
destroyChunkButtons();
wave_name=QFileDialog::getOpenFileName(wave_path,RD_AUDIO_FILE_FILTER,this);
if(wave_name.isEmpty()) {
wave_loaded=false;
wave_path=getenv("HOME");
wave_base=tr("RHPIPlay");
update();
return;
}
wavefile=new RDWaveFile(wave_name);
if(wavefile->openWave()) {
wave_loaded=true;
wave_path=RDGetPathPart(wave_name);
wave_base="RHPIPlay - ";
if(wavefile->getCartChunk()) {
wave_base+=wavefile->getCartTitle();
}
else {
wave_base+=RDGetBasePart(wave_name);
}
createChunkButtons();
update();
}
else {
QMessageBox::warning(this,tr("RDChunk"),tr("Unable to open file!"));
delete wavefile;
wavefile=NULL;
}
}
void MainWidget::quitMainWidget()
{
qApp->quit();
}
void MainWidget::paintEvent(QPaintEvent *paintevent)
{
QPainter *p=new QPainter(this);
p->setFont(QFont("arial",12,QFont::Bold));
if(wave_loaded) {
p->moveTo(10,65);
p->lineTo(sizeHint().width()-10,65);
p->lineTo(sizeHint().width()-10,y_chunk_button);
p->lineTo(10,y_chunk_button);
p->lineTo(10,65);
}
}
void MainWidget::displayFmt()
{
char string[256];
QString output;
QString str1;
QString str2;
//
// Basic Data, common to all valid WAV files
//
switch(wavefile->getFormatTag()) {
case WAVE_FORMAT_PCM:
str1=QString(tr("Format: PCM"));
str2=QString(tr("Linear"));
sprintf(string,"%s%d %s\n",(const char *)str1,
wavefile->getBitsPerSample(),(const char *)str2);
output=output.append(string);
break;
case WAVE_FORMAT_MPEG:
str1=QString(tr("Format: MPEG Layer"));
sprintf(string,"%s %d\n",(const char *)str1,wavefile->getHeadLayer());
output=output.append(string);
break;
case WAVE_FORMAT_VORBIS:
str1=QString(tr("Format: OggVorbis"));
sprintf(string,"%s\n",(const char *)str1);
output=output.append(string);
break;
default:
str1=QString(tr("Format: Unknown"));
sprintf(string,"Format: %s\n",(const char *)str1);
output=output.append(string);
break;
}
str1=QString(tr("Channels:"));
sprintf(string,"%s %d\n",(const char *)str1,wavefile->getChannels());
output=output.append(string);
str1=QString(tr("Sample Rate:"));
str2=QString(tr("samples/sec"));
sprintf(string,"%s %d %s\n",(const char *)str1,wavefile->getSamplesPerSec(),
(const char *)str2);
output=output.append(string);
str1=QString(tr("Average Data Rate:"));
str2=QString(tr("bytes/sec"));
sprintf(string,"%s %d %s\n",(const char *)str1,wavefile->getAvgBytesPerSec(),
(const char *)str2);
output=output.append(string);
str1=QString(tr("Frame Size:"));
str2=QString(tr("byte3s"));
sprintf(string,"%s %d %s\n",(const char *)str1,wavefile->getBlockAlign(),
(const char *)str2);
output=output.append(string);
//
// PCM Linear specific data
//
if(wavefile->getFormatTag()==WAVE_FORMAT_PCM) {
str1=QString(tr("Sample Size:"));
str2=QString(tr("bits/chan/sample"));
sprintf(string,"%s %d %s\n",(const char *)str1,
wavefile->getBitsPerSample(),
(const char *)str2);
output=output.append(string);
}
//
// MPEG-1 specific data
//
if(wavefile->getFormatTag()==WAVE_FORMAT_MPEG) {
str1=QString(tr("Bit Rate:"));
str2=QString(tr("bits/sec"));
sprintf(string,"%s %d %s\n",(const char *)str1,wavefile->getHeadBitRate(),
(const char *)str2);
output=output.append(string);
sprintf(string,tr("Codec Mode(s): "));
if((wavefile->getHeadMode()&ACM_MPEG_STEREO)!=0) {
strcat(string,tr("Stereo "));
}
if((wavefile->getHeadMode()&ACM_MPEG_JOINTSTEREO)!=0) {
strcat(string,tr("JointStereo "));
}
if((wavefile->getHeadMode()&ACM_MPEG_DUALCHANNEL)!=0) {
strcat(string,tr("DualChannel "));
}
if((wavefile->getHeadMode()&ACM_MPEG_SINGLECHANNEL)!=0) {
strcat(string,tr("SingleChannel "));
}
strcat(string,"\n");
output=output.append(string);
switch(wavefile->getHeadEmphasis()) {
case 1:
str1=QString(tr("None"));
sprintf(string,"Emphasis: %s\n",(const char *)str1);
output=output.append(string);
break;
case 2:
str1=QString(tr("50/15 ms"));
sprintf(string,"Emphasis: %s\n",(const char *)str1);
output=output.append(string);
break;
case 3:
str1=QString(tr("Reserved"));
sprintf(string,"Emphasis: %s\n",(const char *)str1);
output=output.append(string);
break;
case 4:
str1=QString(tr("CCITT J.17"));
sprintf(string,"Emphasis: %s\n",(const char *)str1);
output=output.append(string);
break;
default:
str1=QString(tr("Unknown"));
sprintf(string,"Emphasis: %s\n",(const char *)str1);
output=output.append(string);
break;
}
sprintf(string,tr("Flags: "));
if((wavefile->getHeadFlags()&ACM_MPEG_PRIVATEBIT)!=0) {
strcat(string,tr("Private "));
}
if((wavefile->getHeadFlags()&ACM_MPEG_COPYRIGHT)!=0) {
strcat(string,tr("Copyright "));
}
if((wavefile->getHeadFlags()&ACM_MPEG_ORIGINALHOME)!=0) {
strcat(string,tr("Home "));
}
if((wavefile->getHeadFlags()&ACM_MPEG_PROTECTIONBIT)!=0) {
strcat(string,"Protect ");
}
if((wavefile->getHeadFlags()&ACM_MPEG_ID_MPEG1)!=0) {
strcat(string,tr("MPEG "));
}
strcat(string,"\n");
output=output.append(string);
}
QMessageBox::information(this,tr("FMT Chunk"),output);
}
void MainWidget::displayData()
{
QString str1;
QString str2;
char string[256];
QString output;
str1=QString(tr("Data Size:"));
str2=QString(tr("bytes"));
sprintf(string,"%s %d %s\n",(const char *)str1,wavefile->getDataLength(),
(const char *)str2);
output=output.append(string);
QMessageBox::information(this,tr("DATA Chunk"),output);
}
void MainWidget::displayFact()
{
QString str1;
QString str2;
char string[256];
QString output;
str1=QString(tr("Sample Size:"));
str2=QString(tr("samples"));
sprintf(string,"%s %d %s\n",(const char *)str1,wavefile->getSampleLength(),
(const char *)str2);
output=output.append(string);
QMessageBox::information(this,"FACT Chunk",output);
}
void MainWidget::displayCart()
{
QString str1;
QString str2;
char string[256];
QString output;
bool timers_found=false;
/*
sprintf(string,"Cart Chunk Version: %c.%c.%c\n",
(wavefile->getCartVersion()>>24)&255,
(wavefile->getCartVersion()>>16)&255,
(wavefile->getCartVersion()>>8)&255);
output=output.append(string);
*/
output=output.append(tr("TITLE: "));
output=output.append(wavefile->getCartTitle());
output=output.append("\n");
output=output.append(tr("ARTIST: "));
output=output.append(wavefile->getCartArtist());
output=output.append("\n");
output=output.append(tr("CUT ID: "));
output=output.append(wavefile->getCartCutID());
output=output.append("\n");
output=output.append(tr("CLIENT ID: "));
output=output.append(wavefile->getCartClientID());
output=output.append("\n");
output=output.append(tr("CATEGORY: "));
output=output.append(wavefile->getCartCategory());
output=output.append("\n");
output=output.append(tr("CLASSIFICATION: "));
output=output.append(wavefile->getCartClassification());
output=output.append("\n");
output=output.append(tr("OUT CUE: "));
output=output.append(wavefile->getCartOutCue());
output=output.append("\n");
output=output.append(tr("START DATE: "));
output=output.append(wavefile->getCartStartDate().toString());
output=output.append("\n");
output=output.append(tr("START TIME: "));
output=output.append(wavefile->getCartStartTime().toString());
output=output.append("\n");
output=output.append(tr("END DATE: "));
output=output.append(wavefile->getCartEndDate().toString());
output=output.append("\n");
output=output.append(tr("END TIME: "));
output=output.append(wavefile->getCartEndTime().toString());
output=output.append("\n");
output=output.append(tr("PRODUCER ID: "));
output=output.append(wavefile->getCartProducerAppID());
output=output.append("\n");
output=output.append(tr("PRODUCER VERSION: "));
output=output.append(wavefile->getCartProducerAppVer());
output=output.append("\n");
output=output.append(tr("USER DEFINED: "));
output=output.append(wavefile->getCartUserDef());
output=output.append("\n");
if(wavefile->getCartLevelRef()>0) {
str1=QString(tr("LEVEL REFERENCE:"));
str2=QString(tr("dB"));
sprintf(string,"%s %5.1lf %s\n",(const char *)str1,
20*log10((float)wavefile->getCartLevelRef()/32767),
(const char *)str2);
}
else {
str1=QString(tr("LEVEL REFERENCE:"));
str2=QString(tr("Undefined"));
sprintf(string,"%s %s\n",(const char *)str1,(const char *)str2);
}
output=output.append(string);
output=output.append(tr("URL: "));
output=output.append(wavefile->getCartURL());
output=output.append("\n");
output=output.append(tr("CART TIMER(S): "));
for(int i=0;i<MAX_TIMERS;i++) {
if(!wavefile->getCartTimerLabel(i).isEmpty()) {
output=output.append(wavefile->getCartTimerLabel(i));
sprintf(string,": %u\n",wavefile->getCartTimerSample(i));
output=output.append(string);
timers_found=true;
}
}
if(!timers_found) {
output=output.append("\n");
}
output=output.append(tr("TAG TEXT: "));
output=output.append(wavefile->getCartTagText());
output=output.append("\n");
QMessageBox::information(this,tr("CART Chunk"),output);
}
void MainWidget::displayBext()
{
char string[256];
QString output;
QString str;
output=output.append(tr("DESCRIPTION: "));
output=output.append(wavefile->getBextDescription());
output=output.append("\n");
output=output.append(tr("ORIGINATOR: "));
output=output.append(wavefile->getBextOriginator());
output=output.append("\n");
output=output.append(tr("ORIGINATOR REFERENCE: "));
output=output.append(wavefile->getBextOriginatorRef());
output=output.append("\n");
output=output.append(tr("ORIGINATION DATE: "));
output=output.append(wavefile->getBextOriginationDate().toString());
output=output.append("\n");
output=output.append(tr("ORIGINATION TIME: "));
output=output.append(wavefile->getBextOriginationTime().toString());
output=output.append("\n");
str=QString(tr("VERSION:"));
sprintf(string,"%s %d\n",(const char *)str,wavefile->getBextVersion());
output=output.append(string);
output=output.append(tr("CODING HISTORY: "));
output=output.append(wavefile->getBextCodingHistory());
output=output.append("\n");
QMessageBox::information(this,tr("BEXT Chunk"),output);
}
void MainWidget::displayMext()
{
QString output;
QString str1;
QString str2;
output=output.append(tr("MPEG Data Composition: "));
if(wavefile->getMextHomogenous()) {
output=output.append(tr("Homogenous"));
output=output.append("\n");
if(wavefile->getMextPaddingUsed()) {
output=output.append(tr("The padding bit is active."));
output=output.append("\n");
}
else {
output=output.append(tr("The padding bit is inactive."));
output=output.append("\n");
}
if(wavefile->getMextHackedBitRate()) {
output=output.append(tr("The bit rate is non-standard."));
output=output.append("\n");
}
}
else {
output=output.append(tr("Non-homogenous"));
output=output.append("\n");
}
if(wavefile->getMextFreeFormat()) {
output=output.append(tr("MPEG Format: Free Format"));
output=output.append("\n");
}
else {
output=output.append(tr("MPEG Format: Constant Bit Rate"));
output=output.append("\n");
}
str1=QString(tr("MPEG Frame Size:"));
str2=QString(tr("bytes"));
output=output.append(QString().sprintf("%s %d %s",(const char *)str1,
wavefile->getMextFrameSize(),
(const char *)str2));
output=output.append("\n");
str1=QString(tr("Ancillary Bytes:"));
str2=QString(tr("bytes"));
output=output.append(QString().sprintf("%s %d %s\n",(const char *)str1,
wavefile->getMextAncillaryLength(),
(const char *)str2));
output=output.append("\n");
if(wavefile->getMextAncillaryLength()>0) {
output=output.append(tr("Ancillary Data: "));
if(wavefile->getMextLeftEnergyPresent()) {
output=output.append(tr(" LeftEnergy"));
}
if(wavefile->getMextRightEnergyPresent()) {
output=output.append(tr(" RightEnergy"));
}
if(wavefile->getMextPrivateDataPresent()) {
output=output.append(tr(" PrivateData"));
}
output=output.append("\n");
}
QMessageBox::information(this,tr("MEXT Chunk"),output);
}
void MainWidget::displayLevl()
{
QString output;
QString str;
output=output.append(tr("Version: "));
output=output.append(QString().sprintf("%d\n",wavefile->getLevlVersion()));
output=output.append(tr("Samples per Peak: "));
output=
output.append(QString().sprintf("%d\n",wavefile->getLevlBlockSize()));
output=output.append(tr("Sample Channels: "));
output=output.append(QString().sprintf("%d\n",wavefile->getLevlChannels()));
output=output.append(tr("Overall Peak: "));
if(wavefile->getLevlPeak()==0) {
output=output.append(tr("Unknown"));
output=output.append("\n");
}
else {
str=QString(tr("dBFS"));
output=output.append(QString().sprintf("%5.1f %s\n",
20.0*log10((double)wavefile->getLevlPeak()/32768.0),
(const char *)str));
}
output=output.append(tr("Timestamp: "));
output=
output.append(wavefile->getLevlTimestamp().toString("MM-dd-yyyy hh:mm:ss"));
QMessageBox::information(this,tr("LEVL Chunk"),output);
}
void MainWidget::displayAIR1()
{
}
int main(int argc,char *argv[])
{
QApplication a(argc,argv);
//
// Load Translations
//
//
// Load Translations
//
QTranslator qt(0);
qt.load(QString(QTDIR)+QString("/translations/qt_")+QTextCodec::locale(),
".");
a.installTranslator(&qt);
QTranslator rd(0);
rd.load(QString(PREFIX)+QString("/share/rivendell/librd_")+
QTextCodec::locale(),".");
a.installTranslator(&rd);
QTranslator rdhpi(0);
rdhpi.load(QString(PREFIX)+QString("/share/rivendell/librdhpi_")+
QTextCodec::locale(),".");
a.installTranslator(&rdhpi);
QTranslator tr(0);
tr.load(QString(PREFIX)+QString("/share/rivendell/rdutils_")+
QTextCodec::locale(),".");
a.installTranslator(&tr);
//
// Start Event Loop
//
MainWidget *w=new MainWidget(NULL,"main");
a.setMainWidget(w);
w->setGeometry(QRect(QPoint(0,0),w->sizeHint()));
w->show();
return a.exec();
}

84
utils/rdchunk/rdchunk.h Normal file
View File

@@ -0,0 +1,84 @@
// rdchunk.h
//
// Utility for examining chunk data in WAV files.
//
// (C) Copyright 2002-2004,2008 Fred Gleason <fredg@paravelsystems.com>
//
// $Id: rdchunk.h,v 1.3.8.1 2013/12/05 17:37:48 cvs Exp $
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
// published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public
// License along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
#ifndef RDCHUNK_H
#define RDCHUNK_H
#include <qwidget.h>
#include <qpushbutton.h>
#include <qlabel.h>
#include <rdwavefile.h>
#define MIXER_X 150
#define MIXER_Y 200
#define METER_UPDATE_INTERVAL 50
class MainWidget : public QWidget
{
Q_OBJECT
public:
MainWidget(QWidget *parent=0,const char *name=0);
QSize sizeHint() const;
QSizePolicy sizePolicy() const;
protected:
void paintEvent(QPaintEvent *);
private slots:
void loadWaveFile();
void quitMainWidget();
void displayFmt();
void displayData();
void displayFact();
void displayCart();
void displayBext();
void displayMext();
void displayLevl();
void displayAIR1();
private:
void createChunkButtons();
void destroyChunkButtons();
QTimer *meter_timer;
RDWaveFile *wavefile;
int y_chunk_button;
bool wave_loaded;
QString wave_name;
QString wave_path;
QString wave_base;
QPushButton *fmt_button;
QPushButton *data_button;
QPushButton *fact_button;
QPushButton *cart_button;
QPushButton *bext_button;
QPushButton *mext_button;
QPushButton *levl_button;
QPushButton *AIR1_button;
QLabel *wave_chunk_label;
int play_port;
};
#endif

28
utils/rdchunk/rdchunk.pro Normal file
View File

@@ -0,0 +1,28 @@
# rdchunk.pro
#
# The utils/rdchunk/ QMake project file for Rivendell
#
# (C) Copyright 2003-2006,2008 Fred Gleason <fredg@paravelsystems.com>
#
# $Id: rdchunk.pro,v 1.2 2010/08/04 23:07:02 cvs Exp $
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
SOURCES += rdchunk.cpp
HEADERS += rdchunk.h
TRANSLATIONS += rdchunk_es.ts
TRANSLATIONS += rdchunk_fr.ts
TRANSLATIONS += rdchunk_de.ts
TRANSLATIONS += rdchunk_pt_BR.ts

373
utils/rdchunk/rdchunk_de.ts Normal file
View File

@@ -0,0 +1,373 @@
<!DOCTYPE TS><TS>
<context>
<name>MainWidget</name>
<message>
<source>Load</source>
<translation>Laden</translation>
</message>
<message>
<source>RHPIPlay</source>
<translation>RHPIPlay</translation>
</message>
<message>
<source>Format: PCM</source>
<translation>Format: PCM</translation>
</message>
<message>
<source>Linear</source>
<translation>Linear</translation>
</message>
<message>
<source>Format: MPEG Layer</source>
<translation>Format: MPEG Layer</translation>
</message>
<message>
<source>Format: OggVorbis</source>
<translation>Format: OggVorbis</translation>
</message>
<message>
<source>Format: Unknown</source>
<translation>Format: Unknown</translation>
</message>
<message>
<source>Channels:</source>
<translation>Kanäle:</translation>
</message>
<message>
<source>Sample Rate:</source>
<translation>Samplerate:</translation>
</message>
<message>
<source>samples/sec</source>
<translation>samples/sec</translation>
</message>
<message>
<source>Average Data Rate:</source>
<translation>Durchschnittliche Datenrate:</translation>
</message>
<message>
<source>bytes/sec</source>
<translation>bytes/sec</translation>
</message>
<message>
<source>Frame Size:</source>
<translation>Framegröße:</translation>
</message>
<message>
<source>byte3s</source>
<translation>byte3s</translation>
</message>
<message>
<source>Sample Size:</source>
<translation>Samplegröße:</translation>
</message>
<message>
<source>bits/chan/sample</source>
<translation>Bits/Kanal/Sample</translation>
</message>
<message>
<source>Bit Rate:</source>
<translation>Bitrate:</translation>
</message>
<message>
<source>bits/sec</source>
<translation>bits/sec</translation>
</message>
<message>
<source>Codec Mode(s): </source>
<translation>Codec Mode(s): </translation>
</message>
<message>
<source>Stereo </source>
<translation>Stereo </translation>
</message>
<message>
<source>JointStereo </source>
<translation>JointStereo </translation>
</message>
<message>
<source>DualChannel </source>
<translation>Zwei Kanäle</translation>
</message>
<message>
<source>SingleChannel </source>
<translation>Ein Kanal</translation>
</message>
<message>
<source>None</source>
<translation>Keine</translation>
</message>
<message>
<source>50/15 ms</source>
<translation>50/15 ms</translation>
</message>
<message>
<source>Reserved</source>
<translation>Reserviert</translation>
</message>
<message>
<source>CCITT J.17</source>
<translation>CCITT J.17</translation>
</message>
<message>
<source>Unknown</source>
<translation>unbekannt</translation>
</message>
<message>
<source>Flags: </source>
<translation>Flags: </translation>
</message>
<message>
<source>Private </source>
<translation>Privat</translation>
</message>
<message>
<source>Copyright </source>
<translation>Copyright </translation>
</message>
<message>
<source>Home </source>
<translation>Home </translation>
</message>
<message>
<source>MPEG </source>
<translation>MPEG </translation>
</message>
<message>
<source>FMT Chunk</source>
<translation>FMT Chunk</translation>
</message>
<message>
<source>Data Size:</source>
<translation>Datengröße:</translation>
</message>
<message>
<source>bytes</source>
<translation>bytes</translation>
</message>
<message>
<source>DATA Chunk</source>
<translation>DATA Chunk</translation>
</message>
<message>
<source>samples</source>
<translation>samples</translation>
</message>
<message>
<source>TITLE: </source>
<translation>TITEL: </translation>
</message>
<message>
<source>ARTIST: </source>
<translation>KÜNSTLER: </translation>
</message>
<message>
<source>CUT ID: </source>
<translation>CUT ID: </translation>
</message>
<message>
<source>CLIENT ID: </source>
<translation>KUNDEN ID: </translation>
</message>
<message>
<source>CATEGORY: </source>
<translation>KATEGORIE: </translation>
</message>
<message>
<source>CLASSIFICATION: </source>
<translation>KLASSIFIKATION: </translation>
</message>
<message>
<source>OUT CUE: </source>
<translation>OUTCUE: </translation>
</message>
<message>
<source>START DATE: </source>
<translation>STARTDATUM: </translation>
</message>
<message>
<source>START TIME: </source>
<translation>STARTZEIT: </translation>
</message>
<message>
<source>END DATE: </source>
<translation>ENDDATUM:</translation>
</message>
<message>
<source>END TIME: </source>
<translation>ENDZEIT: </translation>
</message>
<message>
<source>PRODUCER ID: </source>
<translation>PRODUZENTEN-ID: </translation>
</message>
<message>
<source>PRODUCER VERSION: </source>
<translation>PRODUZENTEN-VERSION: </translation>
</message>
<message>
<source>USER DEFINED: </source>
<translation>BENUTZERDEFINIERT: </translation>
</message>
<message>
<source>LEVEL REFERENCE:</source>
<translation>LEVELREFERENZ: </translation>
</message>
<message>
<source>dB</source>
<translation>dB</translation>
</message>
<message>
<source>Undefined</source>
<translation>Nicht definiert</translation>
</message>
<message>
<source>URL: </source>
<translation>URL: </translation>
</message>
<message>
<source>CART TIMER(S): </source>
<translation>CART TIMER: </translation>
</message>
<message>
<source>TAG TEXT: </source>
<translation>TAG TEXT: </translation>
</message>
<message>
<source>CART Chunk</source>
<translation>CART Chunk</translation>
</message>
<message>
<source>DESCRIPTION: </source>
<translation>BESCHREIBUNG: </translation>
</message>
<message>
<source>ORIGINATOR: </source>
<translation>HERKUNFT: </translation>
</message>
<message>
<source>ORIGINATOR REFERENCE: </source>
<translation>HERKUNFTSREFERENZ:</translation>
</message>
<message>
<source>ORIGINATION DATE: </source>
<translation>HERKUNFTSDATUM:</translation>
</message>
<message>
<source>ORIGINATION TIME: </source>
<translation>HERKUNFTSZEIT: </translation>
</message>
<message>
<source>VERSION:</source>
<translation>VERSION:</translation>
</message>
<message>
<source>CODING HISTORY: </source>
<translation>CODING-HISTORIE: </translation>
</message>
<message>
<source>BEXT Chunk</source>
<translation>BEXT Chunk</translation>
</message>
<message>
<source>MPEG Data Composition: </source>
<translation>MPEG Datenkomposition: </translation>
</message>
<message>
<source>Homogenous</source>
<translation>Homogen</translation>
</message>
<message>
<source>The padding bit is active.</source>
<translation>Das Padding-Bit ist aktiv.</translation>
</message>
<message>
<source>The padding bit is inactive.</source>
<translation>Das Padding-Bit ist inaktiv.</translation>
</message>
<message>
<source>The bit rate is non-standard.</source>
<translation>Die Bitrate weicht vom Standard ab.</translation>
</message>
<message>
<source>Non-homogenous</source>
<translation>Nicht homogen</translation>
</message>
<message>
<source>MPEG Format: Free Format</source>
<translation>MPEG Format: Freies Format</translation>
</message>
<message>
<source>MPEG Format: Constant Bit Rate</source>
<translation>MPEG Format: Konstante Bitrate</translation>
</message>
<message>
<source>MPEG Frame Size:</source>
<translation>MPEG Frame Size:</translation>
</message>
<message>
<source>Ancillary Bytes:</source>
<translation>Ancillary Bytes:</translation>
</message>
<message>
<source>Ancillary Data: </source>
<translation>Ancillary Data: </translation>
</message>
<message>
<source> LeftEnergy</source>
<translation> LeftEnergy</translation>
</message>
<message>
<source> RightEnergy</source>
<translation> RightEnergy</translation>
</message>
<message>
<source> PrivateData</source>
<translation> PrivateData</translation>
</message>
<message>
<source>MEXT Chunk</source>
<translation>MEXT Chunk</translation>
</message>
<message>
<source>Version: </source>
<translation>Version: </translation>
</message>
<message>
<source>Samples per Peak: </source>
<translation>Samples pro Peak: </translation>
</message>
<message>
<source>Sample Channels: </source>
<translation>Sample Kanäle: </translation>
</message>
<message>
<source>Overall Peak: </source>
<translation>Overall Peak: </translation>
</message>
<message>
<source>dBFS</source>
<translation>dBFS</translation>
</message>
<message>
<source>Timestamp: </source>
<translation>Timestamp: </translation>
</message>
<message>
<source>LEVL Chunk</source>
<translation>LEVL Chunk</translation>
</message>
<message>
<source>Chunks</source>
<translation>Chunks</translation>
</message>
<message>
<source>RDChunk</source>
<translation>RDChunk</translation>
</message>
<message>
<source>Unable to open file!</source>
<translation>Kann die Datei nicht öffnen!</translation>
</message>
</context>
</TS>

373
utils/rdchunk/rdchunk_es.ts Normal file
View File

@@ -0,0 +1,373 @@
<!DOCTYPE TS><TS>
<context>
<name>MainWidget</name>
<message>
<source>Load</source>
<translation>Cargar</translation>
</message>
<message>
<source>RHPIPlay</source>
<translation></translation>
</message>
<message>
<source>Format: PCM</source>
<translation>Formato: PCM</translation>
</message>
<message>
<source>Linear</source>
<translation>Lineal</translation>
</message>
<message>
<source>Format: MPEG Layer</source>
<translation>Formato: MPEG Capa</translation>
</message>
<message>
<source>Format: OggVorbis</source>
<translation>Formato: OGGVorbis</translation>
</message>
<message>
<source>Format: Unknown</source>
<translation>Formato: Desconocido</translation>
</message>
<message>
<source>Channels:</source>
<translation>Canales:</translation>
</message>
<message>
<source>Sample Rate:</source>
<translation>Tasa de muestreo:</translation>
</message>
<message>
<source>samples/sec</source>
<translation>muestras/seg</translation>
</message>
<message>
<source>Average Data Rate:</source>
<translation>Tasa promedio de datos:</translation>
</message>
<message>
<source>bytes/sec</source>
<translation>bytes/seg</translation>
</message>
<message>
<source>Frame Size:</source>
<translation>Tamaño de marco:</translation>
</message>
<message>
<source>byte3s</source>
<translation></translation>
</message>
<message>
<source>Sample Size:</source>
<translation>Tamaño de muestra:</translation>
</message>
<message>
<source>bits/chan/sample</source>
<translation>bits/canal/muestra</translation>
</message>
<message>
<source>Bit Rate:</source>
<translation>Tasa de Bit:</translation>
</message>
<message>
<source>bits/sec</source>
<translation>bits/seg</translation>
</message>
<message>
<source>Codec Mode(s): </source>
<translation>Modo(s) de Codec: </translation>
</message>
<message>
<source>Stereo </source>
<translation>Estéreo </translation>
</message>
<message>
<source>JointStereo </source>
<translation></translation>
</message>
<message>
<source>DualChannel </source>
<translation></translation>
</message>
<message>
<source>SingleChannel </source>
<translation></translation>
</message>
<message>
<source>None</source>
<translation>Ninguno</translation>
</message>
<message>
<source>50/15 ms</source>
<translation></translation>
</message>
<message>
<source>Reserved</source>
<translation>Reservado</translation>
</message>
<message>
<source>CCITT J.17</source>
<translation></translation>
</message>
<message>
<source>Unknown</source>
<translation>Desconocido</translation>
</message>
<message>
<source>Flags: </source>
<translation>Banderas: </translation>
</message>
<message>
<source>Private </source>
<translation>Privado</translation>
</message>
<message>
<source>Copyright </source>
<translation></translation>
</message>
<message>
<source>Home </source>
<translation></translation>
</message>
<message>
<source>MPEG </source>
<translation></translation>
</message>
<message>
<source>FMT Chunk</source>
<translation></translation>
</message>
<message>
<source>Data Size:</source>
<translation>Tamaño de datos:</translation>
</message>
<message>
<source>bytes</source>
<translation>bytes</translation>
</message>
<message>
<source>DATA Chunk</source>
<translation></translation>
</message>
<message>
<source>samples</source>
<translation>muestras</translation>
</message>
<message>
<source>TITLE: </source>
<translation>TÍTULO: </translation>
</message>
<message>
<source>ARTIST: </source>
<translation>ARTISTA: </translation>
</message>
<message>
<source>CUT ID: </source>
<translation>ID AUDIO: </translation>
</message>
<message>
<source>CLIENT ID: </source>
<translation>ID CLIENTE: </translation>
</message>
<message>
<source>CATEGORY: </source>
<translation>CATEGORÍA: </translation>
</message>
<message>
<source>CLASSIFICATION: </source>
<translation>CLASIFICACIÓN: </translation>
</message>
<message>
<source>OUT CUE: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>START DATE: </source>
<translation>FECHA INICIO:</translation>
</message>
<message>
<source>START TIME: </source>
<translation>HORA INICIO: </translation>
</message>
<message>
<source>END DATE: </source>
<translation>FECHA FIN: </translation>
</message>
<message>
<source>END TIME: </source>
<translation>HORA FIN: </translation>
</message>
<message>
<source>PRODUCER ID: </source>
<translation>ID PRODUCTOR: </translation>
</message>
<message>
<source>PRODUCER VERSION: </source>
<translation>VERSIÓN DEL PRODUCTOR: </translation>
</message>
<message>
<source>USER DEFINED: </source>
<translation>DEFINIDO POR USUARIO: </translation>
</message>
<message>
<source>LEVEL REFERENCE:</source>
<translation>NIVEL DE REFERENCIA: </translation>
</message>
<message>
<source>dB</source>
<translation>dB</translation>
</message>
<message>
<source>Undefined</source>
<translation>Indefinido</translation>
</message>
<message>
<source>URL: </source>
<translation>URL: </translation>
</message>
<message>
<source>CART TIMER(S): </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>TAG TEXT: </source>
<translation>TEXTO ETIQ: </translation>
</message>
<message>
<source>CART Chunk</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DESCRIPTION: </source>
<translation>DESCRIPCIÓN: </translation>
</message>
<message>
<source>ORIGINATOR: </source>
<translation>ORIGEN: </translation>
</message>
<message>
<source>ORIGINATOR REFERENCE: </source>
<translation>REFERENCIA DEL ORIGEN: </translation>
</message>
<message>
<source>ORIGINATION DATE: </source>
<translation>FECHA DE ORIGEN: </translation>
</message>
<message>
<source>ORIGINATION TIME: </source>
<translation>HORA DE ORIGEN: </translation>
</message>
<message>
<source>VERSION:</source>
<translation>VERSION: </translation>
</message>
<message>
<source>CODING HISTORY: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>BEXT Chunk</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MPEG Data Composition: </source>
<translation>Composición de datos MPEG: </translation>
</message>
<message>
<source>Homogenous</source>
<translation>Homogéneo</translation>
</message>
<message>
<source>The padding bit is active.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The padding bit is inactive.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The bit rate is non-standard.</source>
<translation>La tasa de bits no es estándar.</translation>
</message>
<message>
<source>Non-homogenous</source>
<translation>No homogéneo</translation>
</message>
<message>
<source>MPEG Format: Free Format</source>
<translation>Formato MPEG: formato libre</translation>
</message>
<message>
<source>MPEG Format: Constant Bit Rate</source>
<translation>Formato MPEG: Tasa de bit constante</translation>
</message>
<message>
<source>MPEG Frame Size:</source>
<translation>Tamaño frame MPEG:</translation>
</message>
<message>
<source>Ancillary Bytes:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ancillary Data: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source> LeftEnergy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> RightEnergy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> PrivateData</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MEXT Chunk</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Version: </source>
<translation>Versión: </translation>
</message>
<message>
<source>Samples per Peak: </source>
<translation>Muestras por pico: </translation>
</message>
<message>
<source>Sample Channels: </source>
<translation>Canales de muestra: </translation>
</message>
<message>
<source>Overall Peak: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>dBFS</source>
<translation></translation>
</message>
<message>
<source>Timestamp: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LEVL Chunk</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Chunks</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>RDChunk</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unable to open file!</source>
<translation type="unfinished">¡No pude abrir el archivo!</translation>
</message>
</context>
</TS>

373
utils/rdchunk/rdchunk_fr.ts Normal file
View File

@@ -0,0 +1,373 @@
<!DOCTYPE TS><TS>
<context>
<name>MainWidget</name>
<message>
<source>Load</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>RHPIPlay</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Format: PCM</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Linear</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Format: MPEG Layer</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Format: OggVorbis</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Format: Unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Channels:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sample Rate:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>samples/sec</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Average Data Rate:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>bytes/sec</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Frame Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>byte3s</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sample Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>bits/chan/sample</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Bit Rate:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>bits/sec</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Codec Mode(s): </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Stereo </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>JointStereo </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DualChannel </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SingleChannel </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>None</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>50/15 ms</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Reserved</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CCITT J.17</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Flags: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Private </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copyright </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Home </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MPEG </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>FMT Chunk</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Data Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>bytes</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DATA Chunk</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>samples</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>TITLE: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ARTIST: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CUT ID: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CLIENT ID: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CATEGORY: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CLASSIFICATION: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>OUT CUE: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>START DATE: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>START TIME: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>END DATE: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>END TIME: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PRODUCER ID: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PRODUCER VERSION: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>USER DEFINED: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LEVEL REFERENCE:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>dB</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Undefined</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>URL: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CART TIMER(S): </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>TAG TEXT: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CART Chunk</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DESCRIPTION: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ORIGINATOR: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ORIGINATOR REFERENCE: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ORIGINATION DATE: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ORIGINATION TIME: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>VERSION:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CODING HISTORY: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>BEXT Chunk</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MPEG Data Composition: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Homogenous</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The padding bit is active.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The padding bit is inactive.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The bit rate is non-standard.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Non-homogenous</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MPEG Format: Free Format</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MPEG Format: Constant Bit Rate</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MPEG Frame Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ancillary Bytes:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ancillary Data: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source> LeftEnergy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> RightEnergy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> PrivateData</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MEXT Chunk</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Version: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Samples per Peak: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sample Channels: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Overall Peak: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>dBFS</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Timestamp: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LEVL Chunk</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Chunks</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>RDChunk</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unable to open file!</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@@ -0,0 +1,373 @@
<!DOCTYPE TS><TS>
<context>
<name>MainWidget</name>
<message>
<source>Load</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Chunks</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>RHPIPlay</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>RDChunk</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unable to open file!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Format: PCM</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Linear</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Format: MPEG Layer</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Format: OggVorbis</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Format: Unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Channels:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sample Rate:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>samples/sec</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Average Data Rate:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>bytes/sec</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Frame Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>byte3s</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sample Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>bits/chan/sample</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Bit Rate:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>bits/sec</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Codec Mode(s): </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Stereo </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>JointStereo </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DualChannel </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SingleChannel </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>None</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>50/15 ms</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Reserved</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CCITT J.17</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unknown</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Flags: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Private </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copyright </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Home </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MPEG </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>FMT Chunk</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Data Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>bytes</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DATA Chunk</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>samples</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>TITLE: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ARTIST: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CUT ID: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CLIENT ID: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CATEGORY: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CLASSIFICATION: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>OUT CUE: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>START DATE: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>START TIME: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>END DATE: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>END TIME: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PRODUCER ID: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PRODUCER VERSION: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>USER DEFINED: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LEVEL REFERENCE:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>dB</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Undefined</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>URL: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CART TIMER(S): </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>TAG TEXT: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CART Chunk</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DESCRIPTION: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ORIGINATOR: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ORIGINATOR REFERENCE: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ORIGINATION DATE: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ORIGINATION TIME: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>VERSION:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>CODING HISTORY: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>BEXT Chunk</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MPEG Data Composition: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Homogenous</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The padding bit is active.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The padding bit is inactive.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The bit rate is non-standard.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Non-homogenous</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MPEG Format: Free Format</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MPEG Format: Constant Bit Rate</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MPEG Frame Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ancillary Bytes:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ancillary Data: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source> LeftEnergy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> RightEnergy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> PrivateData</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MEXT Chunk</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Version: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Samples per Peak: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sample Channels: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Overall Peak: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>dBFS</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Timestamp: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LEVL Chunk</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>