Commit 9d039d26 authored by Anika Treffehn's avatar Anika Treffehn
Browse files

check tracefile propertied

parent 5f8001c5
Loading
Loading
Loading
Loading
+42 −0
Original line number Diff line number Diff line
@@ -214,6 +214,7 @@ class Processing_splitting_scaling(Processing):
                # read out tracefile with jbm info
                tracefile_info_file = Path(f"{in_file.with_suffix('').with_suffix('')}.tracefile.csv")
                tracefile_info = np.genfromtxt(tracefile_info_file, delimiter=";")
                validate_tracefile(tracefile_info)
            else:
                tracefile_info = None

@@ -306,3 +307,44 @@ def measure_loudness(file_splits, out_fmt, fs, loudness, loudness_fmt, meta, log
        )
        scaling_splits.append(scale_factor)
    return scaling_splits


def validate_tracefile(tracefile):

    prevPlayTime = -1
    prevRtpTs = -1
    for j in range(tracefile.shape[0]):
        entry = tracefile[j]

        # require playTime > 0 and strictly increasing
        if entry[3] < 0:
            raise ValueError(f"Error in JBM trace file at line {j}: playTime < 0")
        if entry[3] <= prevPlayTime:
            raise ValueError(f"Error in JBM trace file at line {j}: playTime not strictly increasing")
        prevPlayTime = entry[3]

        # require playTime > rcvTime
        if entry[2] >= 0 and entry[3] < entry[2]:
            raise ValueError(f"Error in JBM trace file at line {j}: playTime < rcvTime")

        # rtpTs must be strictly increasing
        if entry[1] >= 0:
            if entry[1] == prevRtpTs:
                raise ValueError(f"Error in JBM trace file at line {j}: duplicated rtpTs found")
            # TODO: (treffehn) include RTP time stamp overflow handling?
            # else if (entry.rtpTs + rtpTsExtension < prevRtpTs) {
            # if (entry.rtpTs + rtpTsExtension + (1LL << 32) - prevRtpTs <
            #         prevRtpTs - (entry.rtpTs + rtpTsExtension)) {
            # // overflow of 32bit RTP time stamp, increase extension
            # rtpTsExtension += 1LL << 32;
            # }
            # else {
            # fprintf(stderr, "Error in JBM trace file at line %d: rtpTs not strictly increasing\n", entry.line);
            # return false;
            # }
            # }
            # entry.rtpTs += rtpTsExtension;
            # prevRtpTs = entry.rtpTs;
            # }
        elif entry[1] != -1:
            raise ValueError(f"Error in JBM trace file at line {j}: unexpected rtpTs")