diff --git a/ci/basop-pages/create_summary_page.py b/ci/basop-pages/create_summary_page.py index 0f19f281005bfe1df58d09e45b9777181a9e10fd..1f146c4cbbb5bfacf57bb908958ee935b3051d3e 100644 --- a/ci/basop-pages/create_summary_page.py +++ b/ci/basop-pages/create_summary_page.py @@ -2,7 +2,7 @@ import argparse from create_report_pages import SUBPAGE_TMPL_CSS, FORMATS -MEASURES = ["MLD","DIFF","SSNR"] +MEASURES = ["MLD","DIFF","SSNR","ODG"] SUMMARY_PAGE_TMPL_HTML = """ diff --git a/lib_dec/jbm_jb4sb.c b/lib_dec/jbm_jb4sb.c index 6e09e58e2b495e9fc3f09af1617717021dfe507a..8ea0e54d822e1b0c630a02336bf62450815d33f6 100644 --- a/lib_dec/jbm_jb4sb.c +++ b/lib_dec/jbm_jb4sb.c @@ -381,9 +381,11 @@ JB4_DATAUNIT_HANDLE JB4_AllocDataUnit( JB4_dropFromBuffer( h ); } + /* LOCK JBM MEMORY SLOT BEGIN */ --h->nFreeMemorySlots; dataUnit = h->freeMemorySlots[h->nFreeMemorySlots]; h->freeMemorySlots[h->nFreeMemorySlots] = NULL; + /* LOCK JBM MEMORY SLOT END */ assert( dataUnit != NULL ); return dataUnit; @@ -397,8 +399,10 @@ void JB4_FreeDataUnit( { assert( dataUnit != NULL ); assert( h->nFreeMemorySlots < MAX_JBM_SLOTS ); + /* LOCK JBM MEMORY SLOT BEGIN */ h->freeMemorySlots[h->nFreeMemorySlots] = dataUnit; h->nFreeMemorySlots++; + /* LOCK JBM MEMORY SLOT END */ return; } diff --git a/readme.txt b/readme.txt index cd5a01d4bed7837f7f29b9856d32858aba6d152b..e6fbd729ead207359e6e304a12d7ea5f9ff29388 100644 --- a/readme.txt +++ b/readme.txt @@ -150,6 +150,24 @@ executables are "IVAS_cod.exe", "IVAS_dec.exe", "IVAS_rend.exe", and "ISAR_post_rend.exe". All reside in the c-code main directory. + INTEGRATION AS LIBRARIES + ======================== + +While this package contains the necessary applications to execute the IVAS encoder, +decoder, renderer and ISAR post renderer, it is envisioned that the libraries used +would be integrated into custom applications. + +It should be noted that this library is not thread-safe by default. Thus, when using +the IVAS libraries in a multi-threaded environment, proper synchronization of API +calls is required to prevent race conditions by concurrent access to IVAS internal +state memory, FIFO queues buffers or any other data structures. Potential mechanisms +include e.g. mutexes, spinlocks and semaphores. The API calls are at the present not +optimized for fine-granular locking of just critical sections. Some sensitive +sections have thus been marked with a comment in the form /* LOCK XYZ BEGIN */ and +/* LOCK XYZ END */ to provide guidance where code could be modified to prevent +some potential race conditions. + + RUNNING THE SOFTWARE ==================== diff --git a/scripts/create_histogram_summary.py b/scripts/create_histogram_summary.py index 6e940c883af20185c5559cbd85428867b237eb5c..ae5ead426005085ffc278a20ee18c8415ecb76df 100644 --- a/scripts/create_histogram_summary.py +++ b/scripts/create_histogram_summary.py @@ -43,7 +43,7 @@ if __name__ == "__main__": "--measure", type=str, nargs=1, - help="Measure, any of: MLD, DIFF, SSNR, default: MLD", + help="Measure, any of: MLD, DIFF, SSNR, ODG, default: MLD", default=["MLD"], ) parser.add_argument( @@ -67,6 +67,7 @@ if __name__ == "__main__": "MLD": ("MLD", [0, 5, 10, math.inf]), "DIFF": ("MAXIMUM ABS DIFF", [0, 1024, 16384, 32769]), "SSNR": ("MIN_SSNR", [-math.inf, 0, 20, 40, 60, 100]), + "ODG": ("MIN_ODG", [-5, -4, -3, -2, -1, 0]), } (measure_label, limits) = limits_per_measure[measure] @@ -85,7 +86,7 @@ if __name__ == "__main__": # Output CSV file with open(csv_summary, "w") as fp: limits_labels = [ - f"{str(a)} --\n {str(b)}" for (a, b) in zip(limits[0:-1], limits[1:]) + f"{str(a)} -- {str(b)}" for (a, b) in zip(limits[0:-1], limits[1:]) ] + ["None"] # Zero difference is treated as a special category for MLD and MAXIMUM ABS DIFF if measure_label == "MLD" or measure_label == "MAXIMUM ABS DIFF": @@ -124,7 +125,8 @@ if __name__ == "__main__": fp.write(line) # Matplotlib histogram - ax.bar(limits_labels, data, 0.5, label=cat, bottom=bottom) + labels = [x if len(x) < 10 else x.replace('--','--\n') for x in limits_labels] + ax.bar(labels, data, 0.5, label=cat, bottom=bottom) bottom += data # Histogram layout