Some basic WMA code added, reads file properties correctly, code of function tag_recode in asf.c changed due to crasher (this needs to be investigated)
parent
37d159e009
commit
c5a869d406
|
@ -832,6 +832,7 @@ static char *getlocale()
|
|||
|
||||
static void tag_recode(char *before, unsigned int len)
|
||||
{
|
||||
return;
|
||||
int result;
|
||||
iconv_t frt;
|
||||
char ansb[len];
|
||||
|
|
|
@ -399,8 +399,8 @@ int av_open_input_file(AVFormatContext **ic_ptr, const char *filename,
|
|||
|
||||
if (!fmt || must_open_file) {
|
||||
/* if no file needed do not try to open one */
|
||||
if (url_fopen(pb, filename, URL_RDONLY) < 0) {
|
||||
err = AVERROR_IO;
|
||||
if ((err = url_fopen(pb, filename, URL_RDONLY)) < 0) {
|
||||
//err = AVERROR_IO;
|
||||
goto fail;
|
||||
}
|
||||
file_opened = 1;
|
||||
|
|
|
@ -19,14 +19,14 @@
|
|||
isa = PBXContainerItemProxy;
|
||||
containerPortal = B09E95030D748F9B0064F138 /* WMA.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 8DC2EF5B0486A6940098B216 /* WMA.framework */;
|
||||
remoteGlobalIDString = 8DC2EF5B0486A6940098B216;
|
||||
remoteInfo = WMA;
|
||||
};
|
||||
B09E95450D7496C60064F138 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = B09E95030D748F9B0064F138 /* WMA.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 8DC2EF4F0486A6940098B216 /* WMA Framework */;
|
||||
remoteGlobalIDString = 8DC2EF4F0486A6940098B216;
|
||||
remoteInfo = "WMA Framework";
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
@ -56,7 +56,6 @@
|
|||
B09E942E0D747F410064F138 /* WMADecoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WMADecoder.m; sourceTree = "<group>"; };
|
||||
B09E94370D747FAD0064F138 /* Plugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Plugin.h; path = ../../Audio/Plugin.h; sourceTree = SOURCE_ROOT; };
|
||||
B09E95030D748F9B0064F138 /* WMA.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = WMA.xcodeproj; path = ../../Frameworks/WMA/WMA.xcodeproj; sourceTree = SOURCE_ROOT; };
|
||||
B09E958A0D749E890064F138 /* WMA.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WMA.framework; path = ../../build/Release/WMA.framework; sourceTree = SOURCE_ROOT; };
|
||||
B09E95F50D74A3ED0064F138 /* Frameworks-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Frameworks-Info.plist"; sourceTree = "<group>"; };
|
||||
D2F7E65807B2D6F200F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
@ -77,7 +76,6 @@
|
|||
089C166AFE841209C02AAC07 /* WMA */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B09E958A0D749E890064F138 /* WMA.framework */,
|
||||
08FB77AFFE84173DC02AAC07 /* Classes */,
|
||||
32C88E010371C26100C91783 /* Other Sources */,
|
||||
089C167CFE841241C02AAC07 /* Resources */,
|
||||
|
|
|
@ -9,7 +9,23 @@
|
|||
#import <Cocoa/Cocoa.h>
|
||||
#import "Plugin.h"
|
||||
|
||||
@interface WMADecoder : NSObject {
|
||||
#import "WMA/avcodec.h"
|
||||
#import "WMA/avformat.h"
|
||||
|
||||
@interface WMADecoder : NSObject <CogDecoder>
|
||||
{
|
||||
id<CogSource> source;
|
||||
|
||||
AVFormatContext *ic;
|
||||
AVCodecContext *c;
|
||||
AVCodec *codec;
|
||||
|
||||
BOOL seekable;
|
||||
int bitsPerSample;
|
||||
int bitrate;
|
||||
int channels;
|
||||
float frequency;
|
||||
long totalFrames;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,130 @@
|
|||
// test
|
||||
#import "WMADecoder.h"
|
||||
|
||||
#define ST_BUFF 2048
|
||||
|
||||
@implementation WMADecoder
|
||||
|
||||
|
||||
|
||||
|
||||
- (BOOL)open:(id<CogSource>)s
|
||||
{
|
||||
source = [s retain];
|
||||
|
||||
ic = NULL;
|
||||
av_register_all();
|
||||
int err, i;
|
||||
const char *filename = [[[source url] path] UTF8String];
|
||||
int st_buff;
|
||||
uint8_t *outbuf, *s_outbuf;
|
||||
|
||||
|
||||
NSLog(@"lolbots: %s", filename);
|
||||
|
||||
|
||||
err = av_open_input_file(&ic, filename, NULL, 0, NULL);
|
||||
|
||||
if (err < 0)
|
||||
NSLog(@"Opening .WMA file failed horribly: %d", err);
|
||||
|
||||
for(i = 0; i < ic->nb_streams; i++) {
|
||||
c = &ic->streams[i]->codec;
|
||||
if(c->codec_type == CODEC_TYPE_AUDIO)
|
||||
{
|
||||
NSLog(@"audio codec found");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
av_find_stream_info(ic);
|
||||
|
||||
codec = avcodec_find_decoder(c->codec_id);
|
||||
if (!codec) {
|
||||
NSLog(@"codec not found");
|
||||
return NO;
|
||||
}
|
||||
|
||||
if (avcodec_open(c, codec) < 0) {
|
||||
NSLog(@"could not open codec");
|
||||
return NO;
|
||||
}
|
||||
|
||||
st_buff = ST_BUFF;
|
||||
|
||||
outbuf = av_malloc(AVCODEC_MAX_AUDIO_FRAME_SIZE);
|
||||
s_outbuf = av_malloc(st_buff);
|
||||
|
||||
dump_format(ic, 0, filename, 0);
|
||||
|
||||
if (ic->title[0] != '\0')
|
||||
NSLog(@"Title: %s", ic->title);
|
||||
if (ic->author[0] != '\0')
|
||||
NSLog(@"Author: %s", ic->author);
|
||||
if (ic->album[0] != '\0')
|
||||
NSLog(@"Album: %s", ic->album);
|
||||
if (ic->year != 0)
|
||||
NSLog(@"Year: %d", ic->year);
|
||||
if (ic->track != 0)
|
||||
NSLog(@"Track: %d", ic->track);
|
||||
if (ic->genre[0] != '\0')
|
||||
NSLog(@"Genre: %s", ic->genre);
|
||||
if (ic->copyright[0] != '\0')
|
||||
NSLog(@"Copyright: %s", ic->copyright);
|
||||
if (ic->comment[0] != '\0')
|
||||
NSLog(@"Comments: %s", ic->comment);
|
||||
|
||||
NSLog(@"bitrate: %d", ic->bit_rate);
|
||||
return YES;
|
||||
|
||||
}
|
||||
|
||||
- (void)close
|
||||
{
|
||||
avcodec_close(c);
|
||||
av_close_input_file(ic);
|
||||
|
||||
[source close];
|
||||
[source release];
|
||||
}
|
||||
|
||||
- (int)readAudio:(void *)buf frames:(UInt32)frames
|
||||
{
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
- (long)seek:(long)frame
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
- (NSDictionary *)properties
|
||||
{
|
||||
return [NSDictionary dictionaryWithObjectsAndKeys:
|
||||
[NSNumber numberWithInt:channels], @"channels",
|
||||
[NSNumber numberWithInt:bitsPerSample], @"bitsPerSample",
|
||||
[NSNumber numberWithFloat:frequency], @"sampleRate",
|
||||
[NSNumber numberWithDouble:totalFrames], @"totalFrames",
|
||||
[NSNumber numberWithInt:bitrate], @"bitrate",
|
||||
[NSNumber numberWithBool:([source seekable] && seekable)], @"seekable",
|
||||
nil];
|
||||
}
|
||||
|
||||
|
||||
+ (NSArray *)fileTypes
|
||||
{
|
||||
return [NSArray arrayWithObjects:@"wma",nil];
|
||||
}
|
||||
|
||||
+ (NSArray *)mimeTypes
|
||||
{
|
||||
return [NSArray arrayWithObjects:@"application/wma", @"application/x-wma", @"audio/x-wma", nil];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
|
Loading…
Reference in New Issue