@@ -267,28 +267,60 @@ if(s->quarter_sample)
267
267
the motion vector is pixel wise, sub-pixel wise, or quarter-pixel wise*/
268
268
/* we don't have to really process motion compensation
269
269
*/
270
+ /*[TODO: doubts]
271
+ src_y and src_x can be negative, where a padding process is applied. we record the dependency macroblock as edge block
272
+ */
270
273
//#undef printf
271
274
//printf("mpeg_motion: mb (%d, %d), motion (%d, %d); src pixel pos(%d, %d); dump: %d\n", s->mb_y, s->mb_x, motion_y, motion_x, src_y, src_x, dump_dep);
272
275
if (dump_dep ) {
276
+ #undef exit
273
277
#undef fprintf
278
+ #undef printf
279
+ /*if (src_x < 0 || src_y < 0) {
280
+ printf("!!!!!!!!%d:%d:%d:%d:\n", src_y, src_x, src_y/16, src_x/16);
281
+ }*/
274
282
if ((src_x % 16 == 0 ) && (src_y % 16 == 0 )) {
275
- //a single mb contains the entire reference mb
276
- //printf("&&&%d:%d:%d:%d:\n", s->mb_y, s->mb_x, src_y/16, src_x/16);
277
- fprintf (s -> avctx -> g_interDepF , "%d:%d:" , src_y /16 , src_x /16 );
283
+ //a single mb contains the entire reference mb
284
+ //printf("&&&%d:%d:%d:%d:\n", s->mb_y, s->mb_x, src_y/16, src_x/16);
285
+ fprintf (s -> avctx -> g_interDepF , "%d:%d:" , src_y /16 >=0 ? src_y /16 :0 , src_x /16 >=0 ? src_x /16 :0 );
286
+ //printf("%d:%d:\n", src_y/16, src_x/16);
287
+ //if (src_y/16 < 0) {
288
+ // printf("%d:%d:", src_y/16, src_x/16);
289
+ //exit(1);
290
+ //}
278
291
} else if (src_x % 16 == 0 ) {
279
292
// RA two mb contains the entire reference mb
280
293
// RB
281
294
//printf("&&&%d:%d:%d:%d:%d:%d:\n", s->mb_y, s->mb_x, src_y/16, src_x/16, src_y/16 + 1, src_x/16);
282
- fprintf (s -> avctx -> g_interDepF , "%d:%d:%d:%d:" , src_y /16 , src_x /16 , src_y /16 + 1 , src_x /16 );
295
+ fprintf (s -> avctx -> g_interDepF , "%d:%d:%d:%d:" , src_y /16 >=0 ? src_y /16 :0 , src_x /16 >=0 ?src_x /16 :0 , (src_y /16 + 1 )>=0 ?(src_y /16 + 1 ):0 , src_x /16 >=0 ?src_x /16 :0 );
296
+ //printf("%d:%d:%d:%d:\n", src_y/16, src_x/16, src_y/16+1, src_x/16);
297
+ //if (src_y/16 < 0) {
298
+ // printf("%d:%d:%d:%d:", src_y/16, src_x/16, src_y/16+1, src_x/16);
299
+ //exit(1);
300
+ //}
301
+ //if (src_y/16 + 1 < 0) {
302
+ // printf("%d:%d:%d:%d:", src_y/16, src_x/16, src_y/16+1, src_x/16);
303
+ //exit(1);
304
+ //}
283
305
} else if (src_y % 16 == 0 ) {
284
- // RA RB: two mb contains the entire reference mb
285
- //printf("&&&%d:%d:%d:%d:%d:%d:\n", s->mb_y, s->mb_x, src_y/16, src_x/16, src_y/16, src_x/16 + 1);
286
- fprintf (s -> avctx -> g_interDepF , "%d:%d:%d:%d:" , src_y /16 , src_x /16 , src_y /16 , src_x /16 + 1 );
306
+ // RA RB: two mb contains the entire reference mb
307
+ //printf("&&&%d:%d:%d:%d:%d:%d:\n", s->mb_y, s->mb_x, src_y/16, src_x/16, src_y/16, src_x/16 + 1);
308
+ fprintf (s -> avctx -> g_interDepF , "%d:%d:%d:%d:" , src_y /16 >=0 ?src_y /16 :0 , src_x /16 >=0 ?src_x /16 :0 , src_y /16 >=0 ?src_y /16 :0 , (src_x /16 + 1 )>=0 ?(src_x /16 + 1 ):0 );
309
+ //printf("%d:%d:%d:%d:\n", src_y/16, src_x/16, src_y/16, src_x/16 + 1);
310
+ //if (src_y/16 < 0) {
311
+ // printf("%d:%d:%d:%d:", src_y/16, src_x/16, src_y/16, src_x/16 + 1);
312
+ //exit(1);
313
+ //}
287
314
} else {
288
- // RA RB: four mb contains the entire reference mb
289
- // RC RC
290
- //printf("&&&%d:%d:%d:%d:%d:%d:%d:%d:%d:%d:\n", s->mb_y, s->mb_x, src_y/16, src_x/16, src_y/16+1, src_x/16, src_y/16, src_x/16+1, src_y/16+1, src_x/16+1);
291
- fprintf (s -> avctx -> g_interDepF , "%d:%d:%d:%d:%d:%d:%d:%d:" , src_y /16 , src_x /16 , src_y /16 + 1 , src_x /16 , src_y /16 , src_x /16 + 1 , src_y /16 + 1 , src_x /16 + 1 );
315
+ // RA RB: four mb contains the entire reference mb
316
+ // RC RC
317
+ //printf("&&&%d:%d:%d:%d:%d:%d:%d:%d:%d:%d:\n", s->mb_y, s->mb_x, src_y/16, src_x/16, src_y/16+1, src_x/16, src_y/16, src_x/16+1, src_y/16+1, src_x/16+1);
318
+ fprintf (s -> avctx -> g_interDepF , "%d:%d:%d:%d:%d:%d:%d:%d:" , src_y /16 >=0 ?src_y /16 :0 , src_x /16 >=0 ?src_x /16 :0 , (src_y /16 + 1 )>=0 ?(src_y /16 + 1 ):0 , src_x /16 >=0 ?src_x /16 :0 , src_y /16 >=0 ?src_y /16 :0 , (src_x /16 + 1 )>=0 ?(src_x /16 + 1 ):0 , (src_y /16 + 1 )>=0 ?(src_y /16 + 1 ):0 , (src_x /16 + 1 )>=0 ?(src_x /16 + 1 ):0 );
319
+ //printf("%d:%d:%d:%d:%d:%d:%d:%d:\n", src_y/16, src_x/16, src_y/16+1, src_x/16, src_y/16, src_x/16+1, src_y/16+1, src_x/16+1);
320
+ //if (src_y/16 < 0) {
321
+ // printf("%d:%d:%d:%d:%d:%d:%d:%d:", src_y/16, src_x/16, src_y/16+1, src_x/16, src_y/16, src_x/16+1, src_y/16+1, src_x/16+1);
322
+ //exit(1);
323
+ //}
292
324
}
293
325
}
294
326
@@ -352,6 +384,10 @@ if(s->quarter_sample)
352
384
src_x , src_y <<field_based ,
353
385
s -> h_edge_pos , s -> v_edge_pos );
354
386
ptr_y = s -> edge_emu_buffer ;
387
+ //printf("dump_dep = %d, src_y, src_x %d:%d\n", dump_dep, src_y, src_x);
388
+ //if (src_y/16 < 0) {
389
+ // exit(1);
390
+ //}
355
391
if (!CONFIG_GRAY || !(s -> flags & CODEC_FLAG_GRAY )){
356
392
uint8_t * uvbuf = s -> edge_emu_buffer + 18 * s -> linesize ;
357
393
s -> dsp .emulated_edge_mc (uvbuf ,
0 commit comments