     outImage->x = image->x;
     outImage->y = image->y;
 
+    // copy filter to constant memory on device
     cudaMemcpyToSymbol(filter_c, filter_h, sizeof(Filter));
     cudaDeviceSynchronize();
 
-
-
+    // for each of the frames run the kernel
     for(i = 0; i < 301; i++) {
         sprintf(outstr, "outfiles/tmp%03d.ppm", i+1);
 


        outImage->data = outputData_h;

        writePPM(outstr,outImage);

    }

    free(outputData_h);
    free(outImage);
    cudaFree(imageData_d);

    fclose(fp);
}

// Allocates memory and initializes a filter for 2D convolution
Filter * initializeFilter()
{
    int data[FILTER_SIZE * FILTER_SIZE] = {0, 0, 0, 0, 0,
