simp_avio_t* in = NULL;
simp_avio_t* out = NULL;
- if (simp_avio_open(&in, "ffmpeg_input", argv[1]) < 0) {
+ if (simp_avio_open(&in, "ffmpeg_input", argv[1], NULL) < 0) {
scf_loge("\n");
return -1;
}
- if (simp_avio_open(&out, "ffmpeg_output", argv[2]) < 0) {
+ if (simp_avio_open(&out, "ffmpeg_output", NULL, argv[2]) < 0) {
scf_loge("\n");
return -1;
}
}
}
-int simp_avio_open(simp_avio_t** pio, const char* type, const char* path)
+int simp_avio_open(simp_avio_t** pio, const char* type, const char* in, const char* out)
{
- if (!pio || !type || !path)
+ if (!pio || !type || (!in && !out))
return -EINVAL;
simp_avio_ops_t* ops = NULL;
io->ops = ops;
if (ops->open) {
- int ret = ops->open(io, path);
+ int ret = ops->open(io, in, out);
if (ret < 0) {
free(io);
return ret;
{
const char* type;
- int (*open )(simp_avio_t* io, const char* path);
+ int (*open )(simp_avio_t* io, const char* in, const char* out);
int (*close)(simp_avio_t* io);
int (*run )(simp_avio_t* io);
int (*stop )(simp_avio_t* io);
simp_frame_t* simp_frame_alloc();
void simp_frame_free (simp_frame_t* f);
-int simp_avio_open (simp_avio_t** pio, const char* type, const char* path);
+int simp_avio_open (simp_avio_t** pio, const char* type, const char* in, const char* out);
int simp_avio_close (simp_avio_t* io);
int simp_avio_run (simp_avio_t* io);
int simp_avio_stop (simp_avio_t* io);
}
}
-static int _ffmpeg_alsa_open(simp_avio_t* io, const char* path)
+static int _ffmpeg_alsa_open(simp_avio_t* io, const char* in, const char* out)
{
simp_audio_t* priv;
AVStream* s;
priv->idx_in = -1;
priv->idx_out = -1;
- ret = _audio_input_init(priv, path);
- if (ret < 0)
- goto error;
+ if (in) {
+ ret = _audio_input_init(priv, in);
+ if (ret < 0)
+ goto error;
+ }
- ret = _audio_output_init(priv, path);
- if (ret < 0)
- goto error;
+ if (out) {
+ ret = _audio_output_init(priv, out);
+ if (ret < 0)
+ goto error;
+ }
io->priv = priv;
return 0;
return 0;
}
-static int _ffmpeg_input_open(simp_avio_t* io, const char* path)
+static int _ffmpeg_input_open(simp_avio_t* io, const char* in, const char* out)
{
simp_ffmpeg_t* priv;
AVStream* s;
int ret;
int i;
+ if (!in)
+ return -EINVAL;
+
priv = calloc(1, sizeof(simp_ffmpeg_t));
if (!priv)
return -ENOMEM;
goto error;
}
- ret = avformat_open_input(&priv->fmt_ctx, path, NULL, NULL);
+ ret = avformat_open_input(&priv->fmt_ctx, in, NULL, NULL);
if (ret < 0) {
scf_loge("ret: %s\n", av_err2str(ret));
goto error;
return 0;
}
-static int _ffmpeg_output_open(simp_avio_t* io, const char* path)
+static int _ffmpeg_output_open(simp_avio_t* io, const char* in, const char* out)
{
simp_ffmpeg_t* priv;
AVStream* s;
int ret;
int i;
+ if (!out)
+ return -EINVAL;
+
priv = calloc(1, sizeof(simp_ffmpeg_t));
if (!priv)
return -ENOMEM;
priv->vidx = -1;
priv->aidx = -1;
- avformat_alloc_output_context2(&priv->fmt_ctx, NULL, NULL, path);
+ avformat_alloc_output_context2(&priv->fmt_ctx, NULL, NULL, out);
if (!priv->fmt_ctx) {
scf_loge("\n");
goto error;