+/*
+ * CINELERRA
+ * Copyright (C) 2016-2020 William Morrow
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA
+ */
+
//#include "bd.h"
//This program was created by inverting libbluray, without any docs,
// so it is probably got problems. Still, works on my Samsung player.
AVDictionary *copts = 0;
//av_dict_copy(&copts, opts, 0);
AVCodecID codec_id = st->codecpar->codec_id;
+#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(58,134,100)
AVCodec *decoder = avcodec_find_decoder(codec_id);
+#endif
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(59,16,100)
+ const AVCodec *decoder = avcodec_find_decoder(codec_id);
+#endif
AVCodecContext *ctx = avcodec_alloc_context3(decoder);
if( !ctx ) {
fprintf(stderr,"codec alloc failed\n");
av_packet_unref(&ipkt);
av_frame_free(&ipic);
avcodec_free_context(&ctx);
+
+ if (ilaced < 0) {
+ fprintf(stderr, "warning bdwrite uses field into from stream \n", st->codecpar->field_order);
+ switch(st->codecpar->field_order) {
+ case AV_FIELD_TT:
+ case AV_FIELD_TB:
+ case AV_FIELD_BB:
+ case AV_FIELD_BT:
+ return 1;
+ case AV_FIELD_PROGRESSIVE:
+ return 0;
+ default:
+ return -1;
+ }
+ }
+
return ilaced;
}
stream *s = new stream(type, i);
s->pid = st->id;
AVCodecID codec_id = st->codecpar->codec_id;
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(59,16,100)
+ const AVCodec *decoder = avcodec_find_decoder(codec_id);
+#endif
+#if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(58,134,100)
AVCodec *decoder = avcodec_find_decoder(codec_id);
+#endif
+
s->ctx = avcodec_alloc_context3(decoder);
if( !s->ctx ) {
fprintf(stderr, "avcodec_alloc_context failed\n");
main(int ac, char **av)
{
char *path = av[1];
- if( mkbdmv(path) ) return 1;
+
av_log_set_level(AV_LOG_FATAL);
//av_log_set_level(AV_LOG_VERBOSE);
//av_log_set_level(AV_LOG_DEBUG);
int opt = getopt(ac, av, "c:");
if (opt == 'c') {
- chapter_every_n_sec = optarg[0]; start = 3; }
+ chapter_every_n_sec = atoi(optarg); start = 4;
+ path = av[3]; printf("Chapter interval: %i \n", chapter_every_n_sec );}
else
start = 2;
-
+ if( mkbdmv(path) ) return 1;
for( int ii=start; ii<ac; ++ii ) {
char *ap = av[ii];
// any dash seq followed by number sets curr title pgm_pid