Begin adding audio project stuff
This commit is contained in:
parent
43d71c6cda
commit
064e3174c4
@ -1,2 +1,81 @@
|
|||||||
#include "ecdb.h"
|
#include "ecdb.h"
|
||||||
|
|
||||||
|
int transcode_data_cb(void *data, int type, void *event);
|
||||||
|
int ecdb_audio_project_init(Ecdb_Audio_Project *proj);
|
||||||
|
|
||||||
|
Ecdb_Audio_Project *
|
||||||
|
ecdb_audio_project_new(void)
|
||||||
|
{
|
||||||
|
Ecdb_Audio_Project *proj;
|
||||||
|
|
||||||
|
proj = calloc(1, sizeof(Ecdb_Audio_Project));
|
||||||
|
if (!proj)
|
||||||
|
return NULL;
|
||||||
|
if (!ecdb_audio_project_init(proj))
|
||||||
|
{
|
||||||
|
FREE(proj);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return proj;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ecdb_audio_project_init(Ecdb_Audio_Project *proj)
|
||||||
|
{
|
||||||
|
if (!ecdb_project_init(ECDB_PROJECT(proj)))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
proj->tracks = ecdb_source_new();
|
||||||
|
proj->num_tracks = 0;
|
||||||
|
proj->num_transcode_complete = 0;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ecdb_audio_project_start(Ecdb_Audio_Project *proj)
|
||||||
|
{
|
||||||
|
char cmd[PATH_MAX]; //<-- + 20ish?
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* Fork off the gstreamer program for every file to be added */
|
||||||
|
for (i = 0; proj->tracks->children[i]; i++)
|
||||||
|
{
|
||||||
|
snprintf(cmd, PATH_MAX, "ecdb_transcode_helper %s",
|
||||||
|
proj->tracks->children[i]->dst);
|
||||||
|
ecore_exe_pipe_run(cmd, ECORE_EXE_PIPE_READ |
|
||||||
|
ECORE_EXE_PIPE_AUTO, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
proj->num_tracks = i - 1;
|
||||||
|
ecore_event_handler_add(ECORE_EXE_EVENT_DATA, transcode_data_cb, proj);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
transcode_data_cb(void *data, int type, void *event)
|
||||||
|
{
|
||||||
|
const char *rec;
|
||||||
|
Ecore_Exe_Event_Data *ev = event;
|
||||||
|
Ecdb_Audio_Project *proj = data;
|
||||||
|
|
||||||
|
rec = ev->data;
|
||||||
|
|
||||||
|
printf("Message: %s\n", rec);
|
||||||
|
|
||||||
|
if (!strcmp(rec, "EOS"))
|
||||||
|
{
|
||||||
|
printf("Transcode complete\n");
|
||||||
|
proj->num_transcode_complete++;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* How to handle errors? */
|
||||||
|
else
|
||||||
|
printf("Error!\n");
|
||||||
|
|
||||||
|
if (proj->num_tracks == proj->num_transcode_complete)
|
||||||
|
printf("Hurrah, transcoding is done!\n");
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#ifndef ECDB_AUDIO_H
|
#ifndef ECDB_AUDIO_H
|
||||||
#define ECDB_AUDIO_H
|
#define ECDB_AUDIO_H
|
||||||
|
|
||||||
int ecdb_audio_project_setup(Ecdb_Burn_Project *proj);
|
Ecdb_Audio_Project *ecdb_audio_project_new(void);
|
||||||
|
void ecdb_audio_project_start(Ecdb_Audio_Project *proj);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -111,6 +111,21 @@ struct _Ecdb_Burn_Project
|
|||||||
/* Typecast a pointer to an Ecdb_Burn_Project */
|
/* Typecast a pointer to an Ecdb_Burn_Project */
|
||||||
#define ECDB_BURN(proj) ((Ecdb_Burn_Project *) proj)
|
#define ECDB_BURN(proj) ((Ecdb_Burn_Project *) proj)
|
||||||
|
|
||||||
|
typedef struct _Ecdb_Audio_Project Ecdb_Audio_Project;
|
||||||
|
struct _Ecdb_Audio_Project
|
||||||
|
{
|
||||||
|
/* Inherit from normal project */
|
||||||
|
Ecdb_Project proj;
|
||||||
|
|
||||||
|
/* Audio tracks */
|
||||||
|
Ecdb_Source *tracks;
|
||||||
|
int num_tracks;
|
||||||
|
int num_transcode_complete;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Typecast a pointer to an Ecdb_Audio_Project */
|
||||||
|
#define ECDB_AUDIO(proj) ((Ecdb_Audio_Project *) proj)
|
||||||
|
|
||||||
typedef struct _Ecdb_Erase_Project Ecdb_Erase_Project;
|
typedef struct _Ecdb_Erase_Project Ecdb_Erase_Project;
|
||||||
struct _Ecdb_Erase_Project
|
struct _Ecdb_Erase_Project
|
||||||
{
|
{
|
||||||
|
@ -11,8 +11,7 @@ bus_call(GstBus *bus, GstMessage *msg, gpointer data)
|
|||||||
{
|
{
|
||||||
case GST_MESSAGE_EOS:
|
case GST_MESSAGE_EOS:
|
||||||
{
|
{
|
||||||
g_print("End of stream\n");
|
g_print("EOS\n");
|
||||||
g_print("Send data back to main program\n");
|
|
||||||
g_main_loop_quit(loop);
|
g_main_loop_quit(loop);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -24,8 +23,7 @@ bus_call(GstBus *bus, GstMessage *msg, gpointer data)
|
|||||||
gst_message_parse_error(msg, &err, &debug);
|
gst_message_parse_error(msg, &err, &debug);
|
||||||
g_free(debug);
|
g_free(debug);
|
||||||
|
|
||||||
g_print("Error: %s\n", err->message);
|
g_print("%s\n", err->message);
|
||||||
g_print("Send error back to main program\n");
|
|
||||||
g_error_free(err);
|
g_error_free(err);
|
||||||
|
|
||||||
g_main_loop_quit(loop);
|
g_main_loop_quit(loop);
|
||||||
|
Loading…
Reference in New Issue
Block a user