summaryrefslogtreecommitdiff
path: root/rotord/rotor.cpp
diff options
context:
space:
mode:
authorComment <tim@gray.(none)>2013-03-18 23:46:24 +0000
committerComment <tim@gray.(none)>2013-03-18 23:46:24 +0000
commit2b7aa6e5084441cdd82a2c7060e510ea423c0381 (patch)
tree2784e8deccc3fe373185c9c982eaae21d4cde9d2 /rotord/rotor.cpp
parent156f40773fae82ec9fe8b5c7ad2615d8fa60c22e (diff)
figuring out codec context
Diffstat (limited to 'rotord/rotor.cpp')
-rw-r--r--rotord/rotor.cpp41
1 files changed, 12 insertions, 29 deletions
diff --git a/rotord/rotor.cpp b/rotord/rotor.cpp
index 281671e..931bfa9 100644
--- a/rotord/rotor.cpp
+++ b/rotord/rotor.cpp
@@ -263,38 +263,12 @@ Command_response Render_context::session_command(const std::vector<std::string>&
return response;
}
-//how to do this?
-//aim - load nodes from xml
-//easily maintain the xml tree
-//be able to save it or print it
-//--if the list of nodes is a flat vector - don't need to store ID with the node - just refer to the index # of the node while loading?
-//--if instead it refers to the index# in the unordered map - can handle deletion etc - have to check if a node exists when linking
-//--also can a node link to one 'later' ? it may have to? in which case there's a 2 step process - 1 load the nodes - 2 link them
-//maybe
-// a generic way to create a named node- each node is an object- will be loadable from .so
-// eventually need to figure out to load .sos and enumerate classes
-// in the short term either
-// - hand logic that recognises nodes and creates inputs etc
-// - not sure how else?
-
-//its a factory?
-//http://stackoverflow.com/questions/4007382/how-to-create-class-objects-dynamically
-//http://www.codeproject.com/Articles/3734/Different-ways-of-implementing-factories
-//http://stackoverflow.com/questions/13292856/create-derived-class-in-base-class-based-on-parameter
-//http://en.wikipedia.org/wiki/Factory_method_pattern
-
-//what is a good way to pass parameters to objects?
-//get all attributes of node and pass them as creation parameters?
-//could just pass them all as strings, let the object choose what to do itself?
-//YES
//http://blog.tomaka17.com/2012/03/libavcodeclibavformat-tutorial/
//great to use c++11 features
-
-
bool Render_context::load_audio(string &filename,vector<base_audio_processor*> processors){
//load audio data from file
//what's the best way to use this? the model is background processing, and we want to update a progress bar
@@ -336,12 +310,13 @@ bool Render_context::load_audio(string &filename,vector<base_audio_processor*> p
}
// getting the required codec structure
- const auto codec = avcodec_find_decoder(stream->codec->codec_id);
+ const auto codec = avcodec_find_decoder(stream->codec->codec_id); //returns AVCodec*
if (codec == nullptr) {
cerr <<"Rotor: Audio codec not available"<< endl;
return false;
}
-
+
+ //AVCodecContext?? avFormat->streams[i]->codec
// allocating a structure
std::shared_ptr<AVCodecContext> audioCodec(avcodec_alloc_context3(codec), [](AVCodecContext* c) { avcodec_close(c); av_free(c); });
@@ -360,6 +335,10 @@ bool Render_context::load_audio(string &filename,vector<base_audio_processor*> p
}
*/
+ //avcodec.h line 1026
+
+ cerr << "audio codec context - sample rate: "<< audioCodec->sample_rate <<" ,channels: "<<audioCodec->channels<<" ,sample format: "<<audioCodec->sample_fmt<<endl;
+
Packet packet(avFormat.get());
if (packet.packet.data == nullptr) {
//done
@@ -376,10 +355,13 @@ bool Render_context::load_audio(string &filename,vector<base_audio_processor*> p
std::shared_ptr<AVFrame> avFrame(avcodec_alloc_frame(), &av_free);
// the current packet of data
- Packet packet;
+ //Packet packet;
// data in the packet of data already processed
size_t offsetInData = 0;
+
+
+ /*
// the decoding loop, running until EOF
while (true) {
// reading a packet using libavformat
@@ -414,6 +396,7 @@ bool Render_context::load_audio(string &filename,vector<base_audio_processor*> p
std::this_thread::sleep(std::chrono::milliseconds(msToWait));
}
}
+ */
return true;
}