This topic describes the visual annotations supported by Streamline.
Visual annotations add images to the visual annotation chart in the Timeline view. The images are also displayed in the Log view.
If you add images to the capture data, they appear in a chart in the Timeline view. This chart enables you to track the visuals of your application with the other chart data.
Visual annotation charts have the following features:
If there is more than one image in the time period that a thumbnail covers, the first image from the range is displayed. Hovering your mouse over the thumbnail displays the image at the current mouse position. Moving the mouse over the thumbnail reveals the other annotated images in that range.
Yellow or blue indicators at the top and bottom of the chart identify the time bins in which your code produced each image. Yellow indicators indicate that the annotation contains text in addition to the image. Blue indicators indicate that there is no additional text.
If you hover over an image in the Timeline view, the indicators at the cursor position turn red. The red indicators identify the time bin of the image currently being displayed. Hovering over a red indicator displays an overlay that contains the timestamp and, if present, the text annotation associated with the image.
Clicking an image switches the Details panel to Images mode and shows an enlarged version of the image. To view an animation of the images in the details panel, click and drag the mouse to the left or right over the image.
Note
Generating a visual annotation is expensive because of the CPU overhead of creating the image and the bandwidth overhead of transferring the image off the device.
To avoid adversely impacting the performance of the application being profiled, Arm recommends that you rate limit the creation of visual annotations.
Images for visual annotations can be in the following formats:
GIF
PNG
JPEG
ICO
BMP +RLE
There is no limit to the image size but the larger the image, the greater the impact on system performance. Increasing the amount of data that is sent to the host in this way increases the probe effect for the applications you are profiling.
ANNOTATE_VISUAL(data, length, str)Record an annotation that includes an image in one of the following formats:
GIF
PNG
JPEG
ICO
BMP +RLE
Specify the image in data, the amount of data to write to the annotate file in length, and optionally a descriptive string to include with the image in str.
The following example uses the ANNOTATE_VISUAL visual annotation to display an image in a track:
std::vector<unsigned char> png_data; // Assume this is populated
ANNOTATE_VISUAL(png_data.data(), png_data.size(), nullptr);
Which renders the image in the track as: