BLURAY_AUDIO_FORMAT_MONO = 1,
BLURAY_AUDIO_FORMAT_STEREO = 3,
BLURAY_AUDIO_FORMAT_MULTI_CHAN = 6,
- BLURAY_AUDIO_FORMAT_COMBO = 12, // Stereo ac3/dts,
+ BLURAY_AUDIO_FORMAT_COMBO = 12, // Stereo ac3/dts,
BLURAY_AUDIO_RATE_48 = 1,
BLURAY_AUDIO_RATE_96 = 4,
bdj_name = cstrdup(nm);
}
-void
+void
pb_obj::write_hdmv_obj(int id_ref)
{
bs.write(pb_typ, 2);
if( w == 720 && h == 480 && ilace ) return BLURAY_VIDEO_FORMAT_480I;
if( w == 720 && h == 576 && ilace ) return BLURAY_VIDEO_FORMAT_576I;
if( w == 720 && h == 480 && !ilace ) return BLURAY_VIDEO_FORMAT_480P;
- if( w == 1920 && h == 1080 && ilace ) return BLURAY_VIDEO_FORMAT_1080I;
+ if( w == 1440 && h == 1080 && ilace ) return BLURAY_VIDEO_FORMAT_1080I;
if( w == 1280 && h == 720 && !ilace ) return BLURAY_VIDEO_FORMAT_720P;
if( w == 1920 && h == 1080 && !ilace ) return BLURAY_VIDEO_FORMAT_1080P;
if( w == 720 && h == 576 && !ilace ) return BLURAY_VIDEO_FORMAT_576P;
double aspect = (w * ratio) / h;
if( fabs(aspect-1.333) < 0.01 ) return BLURAY_ASPECT_RATIO_4_3;
if( fabs(aspect-1.777) < 0.01 ) return BLURAY_ASPECT_RATIO_16_9;
- return w == 720 ? BLURAY_ASPECT_RATIO_4_3 : BLURAY_ASPECT_RATIO_16_9;
+ return w == 720 ? BLURAY_ASPECT_RATIO_4_3 : BLURAY_ASPECT_RATIO_16_9;
fprintf(stderr, "unknown bluray aspect ratio %5.3f\n",aspect);
exit(1);
}
mp->cmds.append(cmd);
mov.movies.append(mp); // BREAK
-
+
for( int ii=0; ii<size(); ++ii ) {
mp = new movie_obj();
mp->resume_intention_flag = 1;
int Media::
bd_copy(const char *ifn, const char *fmt, ...)
{
- int n, ret = 1;
- char bfr[0x40000];
+ int bfrsz = 0x40000, ret = 1;
+ char bfr[bfrsz];
FILE *ifp = fopen(ifn,"r");
if( ifp ) {
va_list ap;
if( ofp ) {
setvbuf(ifp, 0, _IOFBF, 0x80000);
setvbuf(ofp, 0, _IOFBF, 0x80000);
- while( (n=fread(bfr,1,sizeof(bfr),ifp)) > 0 ) fwrite(bfr,1,n,ofp);
- fclose(ofp);
ret = 0;
+ int n = bfrsz;
+ while( !ret && n >= bfrsz ) {
+ n = fread(bfr,1,bfrsz,ifp);
+ if( n > 0 && (int)fwrite(bfr,1,n,ofp) != n ) {
+ fprintf(stderr, "cant write: %s\n",filename);
+ ret = 1;
+ }
+ }
+ if( ferror(ifp) ) {
+ fprintf(stderr, "read error: %s = %m\n",ifn);
+ ret = 1;
+ }
+ if( ferror(ofp) ) {
+ fprintf(stderr, "write error: %s = %m\n",filename);
+ ret = 1;
+ }
+ if( fclose(ofp) ) {
+ fprintf(stderr, "close error: %s = %m\n",filename);
+ ret = 1;
+ }
}
fclose(ifp);
}