lavfi/setpts: enable debug logs, and improve/extend debug messages
This commit is contained in:
		@@ -24,8 +24,6 @@
 | 
				
			|||||||
 * video presentation timestamp (PTS) modification filter
 | 
					 * video presentation timestamp (PTS) modification filter
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* #define DEBUG */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "libavutil/eval.h"
 | 
					#include "libavutil/eval.h"
 | 
				
			||||||
#include "libavutil/internal.h"
 | 
					#include "libavutil/internal.h"
 | 
				
			||||||
#include "libavutil/mathematics.h"
 | 
					#include "libavutil/mathematics.h"
 | 
				
			||||||
@@ -123,6 +121,17 @@ static int config_input(AVFilterLink *inlink)
 | 
				
			|||||||
#define TS2D(ts) ((ts) == AV_NOPTS_VALUE ? NAN : (double)(ts))
 | 
					#define TS2D(ts) ((ts) == AV_NOPTS_VALUE ? NAN : (double)(ts))
 | 
				
			||||||
#define TS2T(ts, tb) ((ts) == AV_NOPTS_VALUE ? NAN : (double)(ts)*av_q2d(tb))
 | 
					#define TS2T(ts, tb) ((ts) == AV_NOPTS_VALUE ? NAN : (double)(ts)*av_q2d(tb))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BUF_SIZE 64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline char *double2int64str(char *buf, double v)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if (isnan(v)) snprintf(buf, BUF_SIZE, "nan");
 | 
				
			||||||
 | 
					    else          snprintf(buf, BUF_SIZE, "%"PRId64, (int64_t)v);
 | 
				
			||||||
 | 
					    return buf;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define d2istr(v) double2int64str((char[BUF_SIZE]){0}, v)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *frame)
 | 
					static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *frame)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    SetPTSContext *setpts = inlink->dst->priv;
 | 
					    SetPTSContext *setpts = inlink->dst->priv;
 | 
				
			||||||
@@ -148,26 +157,32 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *frame)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    d = av_expr_eval(setpts->expr, setpts->var_values, NULL);
 | 
					    d = av_expr_eval(setpts->expr, setpts->var_values, NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    av_log(inlink->dst, AV_LOG_DEBUG,
 | 
				
			||||||
 | 
					           "N:%"PRId64" PTS:%s T:%f POS:%s",
 | 
				
			||||||
 | 
					           (int64_t)setpts->var_values[VAR_N],
 | 
				
			||||||
 | 
					           d2istr(setpts->var_values[VAR_PTS]),
 | 
				
			||||||
 | 
					           setpts->var_values[VAR_T],
 | 
				
			||||||
 | 
					           d2istr(setpts->var_values[VAR_POS]));
 | 
				
			||||||
 | 
					    switch (inlink->type) {
 | 
				
			||||||
 | 
					    case AVMEDIA_TYPE_VIDEO:
 | 
				
			||||||
 | 
					        av_log(inlink->dst, AV_LOG_DEBUG, " INTERLACED:%"PRId64,
 | 
				
			||||||
 | 
					               (int64_t)setpts->var_values[VAR_INTERLACED]);
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					    case AVMEDIA_TYPE_AUDIO:
 | 
				
			||||||
 | 
					        av_log(inlink->dst, AV_LOG_DEBUG, " NB_SAMPLES:%"PRId64" NB_CONSUMED_SAMPLES:%"PRId64,
 | 
				
			||||||
 | 
					               (int64_t)setpts->var_values[VAR_NB_SAMPLES],
 | 
				
			||||||
 | 
					               (int64_t)setpts->var_values[VAR_NB_CONSUMED_SAMPLES]);
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    av_log(inlink->dst, AV_LOG_DEBUG, " -> PTS:%s T:%f\n", d2istr(d), TS2T(d, inlink->time_base));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    frame->pts = D2TS(d);
 | 
					    frame->pts = D2TS(d);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    setpts->var_values[VAR_PREV_INPTS ] = TS2D(in_pts);
 | 
					    setpts->var_values[VAR_PREV_INPTS ] = TS2D(in_pts);
 | 
				
			||||||
    setpts->var_values[VAR_PREV_INT   ] = TS2T(in_pts, inlink->time_base);
 | 
					    setpts->var_values[VAR_PREV_INT   ] = TS2T(in_pts, inlink->time_base);
 | 
				
			||||||
    setpts->var_values[VAR_PREV_OUTPTS] = TS2D(frame->pts);
 | 
					    setpts->var_values[VAR_PREV_OUTPTS] = TS2D(frame->pts);
 | 
				
			||||||
    setpts->var_values[VAR_PREV_OUTT]   = TS2T(frame->pts, inlink->time_base);
 | 
					    setpts->var_values[VAR_PREV_OUTT]   = TS2T(frame->pts, inlink->time_base);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    av_dlog(inlink->dst,
 | 
					 | 
				
			||||||
            "n:%"PRId64" interlaced:%d nb_samples:%d nb_consumed_samples:%d "
 | 
					 | 
				
			||||||
            "pos:%"PRId64" pts:%"PRId64" t:%f -> pts:%"PRId64" t:%f\n",
 | 
					 | 
				
			||||||
            (int64_t)setpts->var_values[VAR_N],
 | 
					 | 
				
			||||||
            (int)setpts->var_values[VAR_INTERLACED],
 | 
					 | 
				
			||||||
            (int)setpts->var_values[VAR_NB_SAMPLES],
 | 
					 | 
				
			||||||
            (int)setpts->var_values[VAR_NB_CONSUMED_SAMPLES],
 | 
					 | 
				
			||||||
            (int64_t)setpts->var_values[VAR_POS],
 | 
					 | 
				
			||||||
            (int64_t)setpts->var_values[VAR_PREV_INPTS],
 | 
					 | 
				
			||||||
            setpts->var_values[VAR_PREV_INT],
 | 
					 | 
				
			||||||
            (int64_t)setpts->var_values[VAR_PREV_OUTPTS],
 | 
					 | 
				
			||||||
            setpts->var_values[VAR_PREV_OUTT]);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    setpts->var_values[VAR_N] += 1.0;
 | 
					    setpts->var_values[VAR_N] += 1.0;
 | 
				
			||||||
    if (setpts->type == AVMEDIA_TYPE_AUDIO) {
 | 
					    if (setpts->type == AVMEDIA_TYPE_AUDIO) {
 | 
				
			||||||
        setpts->var_values[VAR_NB_CONSUMED_SAMPLES] += frame->audio->nb_samples;
 | 
					        setpts->var_values[VAR_NB_CONSUMED_SAMPLES] += frame->audio->nb_samples;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user