From 75b983b26a012eb30dd127bbfd05c6690047ac4a Mon Sep 17 00:00:00 2001 From: D G Starkweather Date: Wed, 24 Mar 2010 18:19:17 +0000 Subject: [PATCH] --- phash-win32/pHash.sln | 24 +++++++---------- phash-win32/pHash.suo | Bin 225792 -> 225792 bytes phash-win32/src/audiophash.cpp | 46 ++++++++++++++++++--------------- phash-win32/src/pHash.cpp | 4 +-- 4 files changed, 36 insertions(+), 38 deletions(-) diff --git a/phash-win32/pHash.sln b/phash-win32/pHash.sln index 938a83d..1f908b6 100644 --- a/phash-win32/pHash.sln +++ b/phash-win32/pHash.sln @@ -5,27 +5,25 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pHash", "pHash.vcproj", "{7 EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testaudio", "..\testaudio\testaudio.vcproj", "{5DF982AB-36B1-443E-A9D3-5BE305DC8FFB}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testvideo", "..\testvideo\testvideo.vcproj", "{C93F1421-49E9-4712-BF7F-E17C57E3B61E}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testmhimage", "..\testmhimage\testmhimage.vcproj", "{7E9970BA-6F47-4777-81EF-8DF507CCECCC}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "buildmvptree", "..\buildmvptree\buildmvptree.vcproj", "{6AB3E639-AAFB-4611-A175-AD2BFD1B5273}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "buildmvptree_mhimage", "..\buildmvptree\buildmvptree.vcproj", "{6AB3E639-AAFB-4611-A175-AD2BFD1B5273}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "addmvptree", "..\addmvptree\addmvptree.vcproj", "{95F51657-B5A9-4F52-802D-6CD2A29DD892}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "addmvptree_mhimage", "..\addmvptree\addmvptree.vcproj", "{95F51657-B5A9-4F52-802D-6CD2A29DD892}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "querymvptree", "..\querymvptree\querymvptree.vcproj", "{01FFD9AE-0522-43CE-853B-2C914BAAAB24}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "querymvptree_mhimage", "..\querymvptree\querymvptree.vcproj", "{01FFD9AE-0522-43CE-853B-2C914BAAAB24}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "buildmvptree2", "..\buildmvptree2\buildmvptree2.vcproj", "{1039AA3D-5394-45EA-BF7F-FDE25C6A31E1}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "buildmvptree_dctimage", "..\buildmvptree2\buildmvptree2.vcproj", "{1039AA3D-5394-45EA-BF7F-FDE25C6A31E1}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "addmvptree2", "..\addmvptree2\addmvptree2.vcproj", "{CB2B26DC-AFD1-499C-A02D-9AE3B23FA233}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "addmvptree_dctimage", "..\addmvptree2\addmvptree2.vcproj", "{CB2B26DC-AFD1-499C-A02D-9AE3B23FA233}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "querymvptree2", "..\querymvptree2\querymvptree2.vcproj", "{0B567061-5505-4770-84D3-1667016A8177}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "querymvptree_dctimage", "..\querymvptree2\querymvptree2.vcproj", "{0B567061-5505-4770-84D3-1667016A8177}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "buildmvptree3", "..\buildmvptree3\buildmvptree3.vcproj", "{AAE5057F-CEF0-43D2-9270-4CA6DA8D3241}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "buildmvptreeaudio", "..\buildmvptree3\buildmvptree3.vcproj", "{AAE5057F-CEF0-43D2-9270-4CA6DA8D3241}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "addmvptree3", "..\addmvptree3\addmvptree3.vcproj", "{2F273052-3A61-48DA-8CFF-BDAB0F602D3A}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "addmvptreeaudio", "..\addmvptree3\addmvptree3.vcproj", "{2F273052-3A61-48DA-8CFF-BDAB0F602D3A}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "querymvptree3", "..\querymvptree3\querymvptree3.vcproj", "{6AE0A43D-D32F-4F81-B736-A2EF880B4B52}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "querymvptreeaudio", "..\querymvptree3\querymvptree3.vcproj", "{6AE0A43D-D32F-4F81-B736-A2EF880B4B52}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -41,10 +39,6 @@ Global {5DF982AB-36B1-443E-A9D3-5BE305DC8FFB}.Debug|Win32.Build.0 = Debug|Win32 {5DF982AB-36B1-443E-A9D3-5BE305DC8FFB}.Release|Win32.ActiveCfg = Release|Win32 {5DF982AB-36B1-443E-A9D3-5BE305DC8FFB}.Release|Win32.Build.0 = Release|Win32 - {C93F1421-49E9-4712-BF7F-E17C57E3B61E}.Debug|Win32.ActiveCfg = Debug|Win32 - {C93F1421-49E9-4712-BF7F-E17C57E3B61E}.Debug|Win32.Build.0 = Debug|Win32 - {C93F1421-49E9-4712-BF7F-E17C57E3B61E}.Release|Win32.ActiveCfg = Release|Win32 - {C93F1421-49E9-4712-BF7F-E17C57E3B61E}.Release|Win32.Build.0 = Release|Win32 {7E9970BA-6F47-4777-81EF-8DF507CCECCC}.Debug|Win32.ActiveCfg = Debug|Win32 {7E9970BA-6F47-4777-81EF-8DF507CCECCC}.Debug|Win32.Build.0 = Debug|Win32 {7E9970BA-6F47-4777-81EF-8DF507CCECCC}.Release|Win32.ActiveCfg = Release|Win32 diff --git a/phash-win32/pHash.suo b/phash-win32/pHash.suo index b6dea45a4a5e8e98ebd8bfefdda87fc7490cccc5..14935f66eed071d32724257591e273274eaf43ad 100644 GIT binary patch delta 3776 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 diff --git a/phash-win32/src/audiophash.cpp b/phash-win32/src/audiophash.cpp index b96c8fb..d2cca1b 100644 --- a/phash-win32/src/audiophash.cpp +++ b/phash-win32/src/audiophash.cpp @@ -121,8 +121,7 @@ int ph_count_samples(const char *filename, int sr,int channels){ __declspec(dllexport) float* ph_readaudio(const char *filename, int sr, int channels, float *sigbuf, int &buflen, const float nbsecs) { - int cap = 0; - + av_log_set_level(AV_LOG_QUIET); av_register_all(); AVFormatContext *pFormatCtx; @@ -196,26 +195,31 @@ float* ph_readaudio(const char *filename, int sr, int channels, float *sigbuf, i int16_t *out_buf16 = (int16_t*)out_buf; ReSampleContext *rs_ctx = audio_resample_init(channels, src_channels, sr, src_sr); - int index = 0; - AVPacket packet; - while ((av_read_frame(pFormatCtx, &packet)>=0) && (index < duration)) + int64_t index = 0; + AVPacket *packet = (AVPacket*)malloc(sizeof(AVPacket)); + av_init_packet(packet); + while ((av_read_frame(pFormatCtx, packet)>=0) && (index < duration)) { - - in_buf_used = buf_size; - numbytesread = avcodec_decode_audio2(pCodecCtx,(int16_t*)in_buf,&in_buf_used,packet.data,packet.size); - if (numbytesread <= 0){ - continue; - } - int cnt = audio_resample(rs_ctx,(short*)out_buf,(short*)in_buf,(int)(in_buf_used/sizeof(int16_t))); - if (index + cnt > buflen){ /*exceeds capacity of buffer, bail out */ - goto readaudio_cleanup; - } - for (int i=0;isize > 0){ + in_buf_used = buf_size; + numbytesread = avcodec_decode_audio2(pCodecCtx,(int16_t*)in_buf,&in_buf_used,packet->data,packet->size); + if (numbytesread <= 0){ + goto readaudio_cleanup; + } + if (in_buf_used > 0){ + int cnt = audio_resample(rs_ctx,(short*)out_buf,(short*)in_buf,(int)(in_buf_used/sizeof(int16_t))); + if (index + cnt > buflen){ /*exceeds capacity of buffer, bail out */ + goto readaudio_cleanup; + } + for (int i=0;isize -= numbytesread; + packet->data += numbytesread; } - - cap += cnt; - index += cnt; + av_destruct_packet_nofree(packet); } readaudio_cleanup: @@ -224,7 +228,7 @@ float* ph_readaudio(const char *filename, int sr, int channels, float *sigbuf, i audio_resample_close(rs_ctx); avcodec_close(pCodecCtx); av_close_input_file(pFormatCtx); - buflen = cap; + buflen = index; return buf; } diff --git a/phash-win32/src/pHash.cpp b/phash-win32/src/pHash.cpp index b834e90..16c687d 100644 --- a/phash-win32/src/pHash.cpp +++ b/phash-win32/src/pHash.cpp @@ -844,7 +844,7 @@ MVPRetCode _ph_map_mvpfile(uint8_t filenumber, off_t offset, MVPFile *m,MVPFile filename = m->filename; } if (use_existing){ - snprintf(objname, sizeof(objname), "%s%d", filename , filenumber); + snprintf(objname, sizeof(objname), "%s%d", filename+1 , filenumber); fm_objname = objname; } DWORD alloc_size = getregionsize(); @@ -1239,7 +1239,7 @@ MVPRetCode ph_query_mvptree(MVPFile *m, DP *query, int knearest, float radius, f filename = m->filename; } char fm_objname[32]; - snprintf(fm_objname, sizeof(fm_objname), "%s%d", filename ,0); + snprintf(fm_objname, sizeof(fm_objname), "%s%d", filename+1 ,0); m->file_pos = 0; HANDLE fmhandle = CreateFileMapping(m->fh,NULL,PAGE_READWRITE,0,0,fm_objname);