summaryrefslogtreecommitdiff
path: root/command/audio.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'command/audio.cpp')
-rw-r--r--command/audio.cpp120
1 files changed, 26 insertions, 94 deletions
diff --git a/command/audio.cpp b/command/audio.cpp
index 46fa57a..082010f 100644
--- a/command/audio.cpp
+++ b/command/audio.cpp
@@ -11,11 +11,6 @@
#include <stdlib.h>
#include <string.h>
-extern "C"
-{
-#include "debug.h"
-}
-
#include "audio.h"
cMarkAdAudio::cMarkAdAudio(MarkAdContext *maContext)
@@ -31,12 +26,21 @@ cMarkAdAudio::cMarkAdAudio(MarkAdContext *maContext)
cMarkAdAudio::~cMarkAdAudio()
{
- Clear();
ResetMark();
+ Clear();
+}
+
+void cMarkAdAudio::Clear()
+{
+ channels=0;
+ if (result.CommentBefore) free(result.CommentBefore);
+ if (result.CommentAfter) free(result.CommentAfter);
+ memset(&result,0,sizeof(result));
}
void cMarkAdAudio::ResetMark()
{
+ if (!mark.Type) return;
if (mark.Comment) free(mark.Comment);
mark.Comment=NULL;
mark.Position=0;
@@ -68,55 +72,6 @@ bool cMarkAdAudio::AddMark(int Type, int Position, const char *Comment)
return true;
}
-bool cMarkAdAudio::AnalyzeGain(int FrameNumber)
-{
- if (!macontext->Audio.Data.Valid) return false;
-
- int samples=macontext->Audio.Data.SampleBufLen/
- sizeof(*macontext->Audio.Data.SampleBuf)/
- macontext->Audio.Info.Channels;
-
- double left[samples];
- double right[samples];
-
- for (int i=0; i<samples; i++)
- {
- left[i]=macontext->Audio.Data.SampleBuf[0+(i*2)];
- right[i]=macontext->Audio.Data.SampleBuf[1+(i*2)];
- }
-
- if (FrameNumber!=lastframe_gain)
- {
- if ((lastframe_gain>0) && (audiogain.AnalyzedSamples()>=(3*samples)))
- {
- double gain = audiogain.GetGain();
- printf("%05i %+.2f db\n",lastframe_gain,gain);
- }
- audiogain.Init(macontext->Audio.Info.SampleRate);
- lastframe_gain=-1;
- }
-
- if (audiogain.AnalyzeSamples(left,right,samples,2)!=GAIN_ANALYSIS_OK)
- {
- lastframe_gain=-1;
- return false;
- }
- else
- {
- lastframe_gain=FrameNumber;
- }
- return true;
-}
-
-void cMarkAdAudio::Clear()
-{
- channels=0;
- lastframe_gain=-1;
- if (result.CommentBefore) free(result.CommentBefore);
- if (result.CommentAfter) free(result.CommentAfter);
- memset(&result,0,sizeof(result));
-}
-
bool cMarkAdAudio::ChannelChange(int a, int b)
{
if ((a==0) || (b==0)) return false;
@@ -124,24 +79,6 @@ bool cMarkAdAudio::ChannelChange(int a, int b)
return false;
}
-MarkAdPos *cMarkAdAudio::Process2ndPass(int FrameNumber)
-{
- if (!FrameNumber) return NULL;
-#if 0
- if (AnalyzeGain(FrameNumber))
- {
- if (result.CommentBefore) free(result.CommentBefore);
- if (asprintf(&result.CommentBefore,"audio silence detection (%i)",FrameNumber)==-1)
- {
- result.CommentBefore=NULL;
- }
- result.FrameNumberBefore=FrameNumber;
- return &result;
- }
-#endif
- return NULL;
-}
-
MarkAdMark *cMarkAdAudio::Process(int FrameNumber, int FrameNumberNext)
{
if ((!FrameNumber) || (!FrameNumberNext)) return NULL;
@@ -155,38 +92,33 @@ MarkAdMark *cMarkAdAudio::Process(int FrameNumber, int FrameNumberNext)
snprintf(buf,255,"audio channel change from %i to %i (", channels,
macontext->Audio.Info.Channels);
- if (macontext->Info.Channels)
+ if (macontext->Audio.Info.Channels>2)
{
- if (macontext->Info.Channels==macontext->Audio.Info.Channels)
- {
- char nbuf[20];
- snprintf(nbuf,sizeof(nbuf),"%i)*",FrameNumberNext);
- nbuf[19]=0;
- strcat(buf,nbuf);
- AddMark(MT_CHANNELSTART,FrameNumberNext,buf);
- }
- else
- {
- char nbuf[20];
- snprintf(nbuf,sizeof(nbuf),"%i)",framelast);
- nbuf[19]=0;
- strcat(buf,nbuf);
- AddMark(MT_CHANNELSTOP,framelast,buf);
- }
+ char nbuf[20];
+ snprintf(nbuf,sizeof(nbuf),"%i)*",FrameNumberNext);
+ nbuf[19]=0;
+ strcat(buf,nbuf);
+ AddMark(MT_CHANNELSTART,FrameNumberNext,buf);
}
else
{
char nbuf[20];
- snprintf(nbuf,sizeof(nbuf),"%i)?",FrameNumber);
+ snprintf(nbuf,sizeof(nbuf),"%i)",framelast);
nbuf[19]=0;
strcat(buf,nbuf);
- AddMark(MT_CHANNELCHANGE,FrameNumber,buf);
+ AddMark(MT_CHANNELSTOP,framelast,buf);
}
free(buf);
}
channels=macontext->Audio.Info.Channels;
framelast=FrameNumber;
- return &mark;
+ if (mark.Position)
+ {
+ return &mark;
+ }
+ else
+ {
+ return NULL;
+ }
}
-